星期一, 一月 30, 2012

谷溝也搞未來式

Google最近更新了隱私權政策服務條款,結果居然也搞未來式(今天是2012年1月30日),有圖為證:

星期四, 一月 12, 2012

iOS需要關掉程式釋放memory

大部份的人都希望手機拿來用而不需要什麼背景知識,但很可惜地,隨著智慧型手機的普及,iOS/Android/WM 用起來比 Symbian 複雜太多,穩定性也更差。

前幾天某個Blog上寫說iOS device在Home鍵按兩下出現 App的列表只是「最近用過的應用程式」,並不會影響作業,完全不需要手動關,這是大錯特錯,完全的誤導呀!

早期iPhone推出時,並不具備多工,但隨著iOS 4推出具備(半?)多工後,事情變得麻煩。因為手機是記憶體受限裝置,iPhone 3GS才256MB,所以多工勢必要消耗更多的記憶體,開了幾十個App之後,很可能會因為作業系統所能支配的記憶體不足,出現速度遲緩或是程式當掉的情形;嚴重時必須重開才能釋放leak的memory。這件事只要用任何一套iOS上的memory monitor程式就可以證實,上個月敝公司的CEO的iPhone 4上Mail完全看不到附件,用這招才恢復正常。根據在下兩年來不專業的使用下,連耗電量都有很大的差異!


補充說明:列表並不代表占在記憶體裡的情形,但是會有關連,尤其是會背景執行的App,必須這樣關閉。在 iOS :認識多工處理 有提到:
Activity Monitor Touch這支程式來證實我的說法。
先做名詞解釋,參考A detailed look at memory usage in OS X,Active不用說,就是現用的 ; Free不必我解釋吧?Inactive 是 allocated memory that hasn't been accessed during last N Secs,也就是可以吐回的記憶體;Wired 是 memory allocated that shouldn't/can't be swapped/paged out ,也就是已配置也不能置換的記憶體。在Activity Monitor Touch用紅色代表Wired,黃色表示Active,白色是Free,藍色是Inactive。以下是測試:
  1. 亂開一堆App,結果快用完256MB:
  2. 先關有背景多工的App,可以看得到Wired memory馬上釋放:
  3. 接著關沒有背景多工的App:
  4. 最後可以看出,若如該篇文章所言,應該不會占用Wired memory,但事實上還是有差別:
剛才是我隨便開的,並沒有長期使用,有些App沒寫好,占住記憶體不放的情形就更明顯,明明不是多工程式,卻使用一堆Wired memory。

最後值得一提的是:iOS上memory leak其實還挺嚴重的,我的iPad一代常發生遊戲玩到某個地方就會當掉,必須關機重開才能繼續玩。希望以後的iOS能夠真的不用再去關背景程式,就suspend到flash上,除了升級OS外別再叫我重開機呀!(這叫做Apple MS化嗎?)

星期二, 一月 03, 2012

換冰箱

最近家裡的冰箱常漏水,搞得地板濕濕地讓我很火大,剛好又看到經濟部補助一二級節能家電2千元,跑到黃色X屋看實體後,決定用貴婦代言的品牌,訂價52900,贈品三選一。有經驗的朋友一看就知道是什麼問題,原來是買國產節能家電補助2000元,並不是一體適用Orz
五門RS49AMJ

星期一下午在黃屋網站下訂50900,變成門市出貨,晚上和我確認時間,星期二就送到。

星期三, 十二月 21, 2011

Localized Folder Name on Mac OSX / 在Mac OSX 資料夾顯示自訂中文名稱

在Mac OSX 自訂 localized 資料夾(目錄)名稱的中文資料不多,以前的方法已經不能用,所以特地記錄下來。

假設我要開一個資料夾叫『Shared』,希望在Finder顯示中文叫『共享』,這種需求主要是在不同語系顯示不同文字,或是因為常使用命令列(Terminal、Console)切換目錄。

根據Localizing Pathnames,正確的做法應該是將資料夾命名為 『Shared.localized』,在其底下再開一個 『.localized 』的資料夾,裡頭放一個 『zh.strings 』的純文字檔案,編碼為UTF-8,內容為:
"Shared" = "共享";

但其實OSX有預設的多國語言化,所以我故意舉這個特別的例子,只要將目錄命名為『Shared』,裡面放一個 .localized 的空檔案,在Finder就會顯示『共享』,同樣地『Pictures』會顯示『圖片』、『Movies』會顯示『影片』、『Music』會顯示『音樂』等等。

星期一, 十二月 12, 2011

地球不會因為你而停止轉動

以下故事全屬虛構,若有雷同純屬巧合。
====================================================

小林在一間500名員工的公司上班,由於產業別特性,該公司並不重視資訊部門。

早上小林向他的主管梅監綁說:『公司的電腦太過老舊,用的XP系統在新電腦很難裝,不少裝置都找不到驅動程式;建議全面汰換,改成Windows 7 64bit,並對目前使用的內部系統更新。』

星期二, 十二月 06, 2011

2009年 13吋Macbook Pro 改裝SSD除去DVD

基本上參考 MacUknow這篇改裝,所以重覆的地方就不說了。
首先去網拍買需要的光碟機外接盒,關鍵字叫『硬碟轉接盒』、『光碟機外接盒』,這位賣家有標明Macbook與MacbookPro用,但我覺得應該沒差;他還附與MacUknow那篇相同的DVD轉HD的轉接盒,我就不重覆貼圖。剛才去找拍賣應該在800元以下一整組,別買貴了。


底盤不太好裝,也沒有螺絲固定,基本上就是卡住,自己要"喬"一下,光碟才能退片
後來有兩根螺絲柱的地方還是太高,我用斜口鉗剪到和邊緣齊才能完全壓下去


光華商場買的工具組,100元
美光Crucial M4花了6799元,在什麼都不奇怪買的,應該可以找到更便宜


裝好就是這樣,其實沒什麼好說的;可以看到我把青雲的保固貼紙貼上去
放入硬碟轉接盒時有個技巧:先將左側斜插進去,再輕輕將盒子壓下

原本開機要52秒,換成SSD只要16秒,呼!
因為我開機會自動啟動Alfred和Dropbox,再加上Spotlight所以會剛登入都要等一下才會順,原本要等將近一分鐘,現在只要10秒,SSD實在太強了!

由於TimeMachine不支援從容量較大的硬碟還原到容量較小的硬碟,所以我只能用USB開機碟重新安裝,再從TimeMachine將應用程式和設定、使用者資料還原。

還原後會發現大部份的應用程式還能用,但是gcc不見了,必須重新安裝XCode。還有Java會在第一次使用需要Java的應用程式時安裝。

重點來了!都是別人寫過的有什麼好寫?不是Apple出品的SSD,預設是不啟用TRIM。不懂的朋友可以看TRIM技術,白話說就是若不支援TRIM會愈用愈慢,最後必須重新低階格式化再將資料倒進去才可用。


啟用TRIM有兩種方法:命令列 或是用Trim Enabler。不過因為Apple在10.6和10.7有所不同,所以用命令列反而比較簡單。

啟動後就是這樣

另外根據Mobile01鄉民的說法,美光Crucial M4的韌體必須更新到0009版才會快,我這台只支援SATA 3G,不是SATA 6G

因為以前常用的AJA System Test在Lion有權限問題不能用,所以改用Blackmagic Disk Speed Test測速度,不過我沒讓它跑完。


這是原本的500GB硬碟

這是Crucial M4 SSD

若是想知道美光Crucial M4 SSD在SATA 6Gb的表現, 可以看T客邦的介紹,基本上這顆SSD比原本的硬碟表現在4倍以上,我已經很滿意,若是日後有效能低落,我也會在Blog上說明。

總結:用了SSD就回不去了!

星期一, 十二月 05, 2011

jQuery UI 配合的 jQuery 版本有限制

認識我的朋友都知道,我不但是重灌狂人級,也是升級狂人,手邊的OS或軟體一定要升級到最新版才爽。

前年底做了個小系統,使用FullCalendar,一開始是jQuery 1.3.2,然後我就一直升級jQuery,也都沒什麼問題,直到這個月從jQuery 1.6.4升到jQuery 1.7.1時,問題出現了。

我一直以為jQuery UIjQuery是同一家出品,只要最新版本應該都相容,jQuery UI也只有寫jQuery 1.3.2+,沒想到jQuery UI的 drag and drop 出現問題,它只能用在jQuery 1.3.2~jQuery 1.6.4。

根據在下去看jQuery UI的source code,是因為它大量使用isNaN,jQuery 1.7把isNaN廢掉了。

結論:升級前請停、看、聽。

星期四, 十一月 24, 2011

SONY VAIO VPCSE16FW/S 不專業開箱文

很久沒有貼開箱文了,今天收到人生首次購買的VAIO,興奮程度不亞於首次買Mac。

這次買的是 SONY VAIO VPCSE16FW/S 銀色,是15吋 Full HD的筆記型電腦;由於24小時購物缺貨,我是在什麼都不奇怪購物買的,後來才知道原來Sony購物網也是相同價格,還比較快(我遜了...)。

星期三, 十一月 23, 2011

網路瞬斷原因

最近公司的光纖升級後,防火牆時常送出網路斷線的通知信給我,大概幾秒鐘後就會再送一封網路連線的通知信;多的時間一天7、8次,有時候又沒有。

星期一, 十一月 14, 2011

我看閃光與銀光

由於此篇無立論根據,就當做閒聊好了。

最近發生一件大事,在老賈掛點後不久,阿逗比宣布終止行動閃光開發英文),國外也有人預測閃光桌上版也活不久。在下敝人小弟我覺得銀光也是有相同的命運,雖然是好技術、好東西,但是就像OS2一樣...

不知道還有人記得Java Applet這玩意兒嗎?現在除了很少數的證卷看盤網頁,很少人在用了...為什麼呢?因為太肥太慢,所以後來Macromedia 推出Flash趁虛而入一炮而紅。

其實Flash有個更大的問題,就是更新!三天兩頭傳出安全性問題,以企業角度來看,若要讓使用者都能更新,要給管理員權限嗎?(現在的版本我不確定沒有管理員權限是否能更新,至少早期版本5、6、7都無法安裝)。敝公司幾年前常有同仁為了網頁的flash看不到而報修,讓維修人員疲於奔命。

同樣的問題也發生在SilverLight身上。從二十世紀末到二十一世紀初,隨著木馬及流氓軟體的流行,人們的使用習慣漸漸從按『是』變成按『否』,在用戶端安裝ActiveX/Plugin愈來愈困難。少數有支援SilverLight的新X證卷,除了SilverLight下單,也不敢不提供下單AP。雖然說SilverLight可以用WSUS/SMS,但是也無法確保用戶100%有更新(除了有使用端點防護軟體嚴格規定沒更新就不能上網者)。若MIS用SilverLight寫內網Web AP(非少數使用者),絕對會哀號遍野,讓維修人員(嗶)聲連連。

大家還記得RMVB嗎?現在漸漸都被Mpeg 4取代。在下認為,閃光會淡出市場(不是真正掛點)如同Java Applet,銀光也是。尤其在Windows 8 開發者預覽的地鐵(Metro)模式不能跑Flash也不能跑SilverLight的同時,更加證實在下的看法...

星期四, 十月 13, 2011

升級到iOS5

今天早上得知iOS 5已經正式開放更新,連忙趕著下載。更新的必要條件是iPhone 3GS、iPhone 4、iPad、iPad2或iPod 3代以上機型,電腦必須搭載iTunes 10.5,在iDevice的頁面上點選「檢查更新項目」,讓它自己裝就可以了。

如果有用過Umbrella備份SHSH的朋友,記得要在Windows的 C:\Windows\System32\drivers\etc\hosts 或Mac的 /etc/hosts 檔案裏,刪除 gs.apple.com 這條(在第一行加上#也行啦)。另外有些使用Windows 7/Vista的朋友升級時也有錯誤訊息,可能按滑鼠右鍵得「以系統管理員身份執行」才能順利升級。

星期三, 十月 05, 2011

How to make your view in FullCalendar: the hack way 如何硬改FullCalendar做出自己的View

因為FullCalendar的變數命名空間及呼叫方式,要在不動原始.js檔情況下建立自己的View很困難,因此先用「硬改」fullcalendar.js 的方式。

It's difficult to make a new view without modifying the source code of "fullcalendar.js", thus I chose the easy way.

星期一, 十月 03, 2011

擴充jQuery Plugin

因為之前都去硬改FullCalendar,它一直改版我老是跟不上,今天終於下定決心好好的看看怎麼擴充別人寫好的jQuery Plugin,關鍵字是extend jQuery plugin。



在查到這篇之前,我以為是利用prototype,但是jQuery內建extend這個方法,所以只要寫成:

var dummyClass = {
            myMethod1: function () {
                return alert('方法1有效');
            }    };
    $.extend(true, $.fn.fullCalendar,dummyClass ); 
或者更簡化成:

$.extend(true, $.fn.fullCalendar, { myMethod1: function () {
return alert('方法1有效');
} }); 


因為FullCalendar得相當Ugly有些變數的可視性僅限於內部,用這種寫法其實還有很多問題,如果有改成功就會有下篇 @@ ,目前試出來能夠增加View,但是options仍然只能在初始化時設定,不算成功。

星期四, 九月 22, 2011

在Xen FreeBSD guest安裝Xen tools

我在XenServer上安裝FreeBSD amd64的guest VM,先編譯HVM kernel再重開機。
~/> su -
# cd /usr/src
/usr/src# make buildkernel KERNCONF=XENHVM
/usr/src# make installkernel KERNCONF=XENHVM
/usr/src# reboot
重開機後會發現網路卡變成xn0,別忘了到 /etc/rc.conf 設定網路。

星期三, 九月 21, 2011

FreeBSD 8.2 i386 hangs on Xen

在XenServer安裝FreeBSD 8.2 release i386沒有問題,但是安裝客制化的Xen kernel重開機後整個VM卡住,用Xen Center或下指令都無法reboot或shutdown。

發現國外也有相同的問題,在這裏有新的patch,Amd64版本則無此問題。

根據FreeBSD/Xen,i386是半虛擬(para-virtualized,PV),amd64只能全虛擬(hardware virtualized,HVM)但可用 PV drivers;在FreeBSD 9.0後對Amazon EC2的相容性比較好,因為EC2即是使用Xen,相信在FreeBSD 9.0之後對Xen的相容性會更佳。

星期三, 九月 07, 2011

Ubuntu 更新錯誤

這幾天更新Ubuntu都偶爾出現bzip2錯誤,原來以為是站台在維護,但是更換Server還是一樣,才驚覺不對勁。

想了想,最近換上去的防火牆有開啟HTTP掃毒,果然關掉後就正常,看來是遇到bzip2封包解太久,造成錯誤。(它是用ClamAV,效能更差)

因為並非常見問題,特此誌之。

星期四, 八月 18, 2011

修正8 bit header在Openwebmail顯示亂碼問題

上一次 解決了 Roundcube的主旨亂碼問題,這次再試著解決Openwebmail的Big5/GBK顯示亂碼。註:此處修正2.53版,自從2009年以來都沒有更新,3.0 beta要釋出得要一段時間。

簡單地說,若在email的header沒有指定Content-Type charset,未編碼的8 bit header在預設UTF-8 的Openwebmail看到主旨、寄件人等名字就是一團糟。

因為敝公司仍未正式轉換到Roundcube,加上VB超人說他比較喜歡Openwebmail的介面,所以夾卵蛋拼小命也要試著做出來,至少在List畫面要正常吧!

星期二, 八月 16, 2011

修正8 bit header在Roundcube顯示亂碼問題

之前寫過很多次,一直找到能接替Openwebmail的下一代webmail,最後採用Roundcube

RFC裏明明規定email header必須用7bit,但是早期的email client如Outlook Express、Becky等都有允許8bit的功能,因此亞洲不少國家流通的email都還有人在用8bit header。會出現允許八位元標頭是因為早期Unix上pine/elm等client軟體沒有編碼/解碼功能,為了讓收件人在elm上能看得到主旨才這麼做。現在新的email client都沒有允許八位元標頭的選項。

Openwebmail若指定預設語系Big5編碼,在收到Big5碼 8bit header郵件時完全正常,但若指定為UTF-8預設語系,則在Big5碼 8bit主旨會亂碼。

Roundcube內定即是UTF-8編碼,大部份的email轉碼都很正常,但是Big5、GB2312等8bit 標頭則會變成亂碼;我在求助無門的情況下只好自力救濟。

Update: Roundcube會對其他編碼處理,但是限於在header有指定Content-Type, charset才行。

星期一, 八月 08, 2011

完美簡繁轉換

因為之前一直用ConvertZ轉影片字幕檔,但是我在家用Mac居多,加上聽完HITCON 2011後在公司也不太想用Windows了(大誤),而且ConvertZ必須自己指定檔案的編碼,對於多檔轉換時很麻煩(找的字幕檔編碼不一定是某種編碼),希望能有更方便的解決方案。原本想要用開放中文轉換opencc,但是在WIndows編譯上遇到困難,後來又看到convert2utf8,本以為它會自動轉換編碼,用了才發現不會,再找了Universal Encoding Detector,自己加上自動編碼偵測,並在轉換檔加上BOM

星期四, 七月 28, 2011

初探 XenServer 免費版

主管指示要開始朝虛擬化前進,原本是想採用 Hyper-V Server ,安裝及設定參考蘇老的文章,用起來也很不錯。沒想到Hyper-V Server 2008 R2 SP1對Linux的相容性比以前還糟,我愛用的TrueImage開機光碟完全不能用。

接下來只好準備換跑道,看到保哥在噗浪上寫 KVM 效能遠勝過 Hyper-V Server ,於是在我的Ubuntu桌機設定 KVM,跑起來感覺並沒有很快。接著我再換 Xen 核心,跑起來其實和 KVM差不多。其實在這裏我犯了嚴重的錯誤,企業級虛擬化與個人用虛擬化不同,應該要使用"乾淨"的測試環境才準。關於Xen的安裝及原理可以參考鳥哥的利用 Xen 設計虛擬機器。至於市場龍頭VMWare 免費Server ESXi很挑硬體,我手上沒有SCSI硬碟,所以就算了。(而且聽說它的管理工具要錢,這...)

其實KVMXen很類似,都是建立在修改Linux Kernel之上(但是KVM算是Linux Kernel內建功能),也都利用QEMU做為虛擬機執行平台,較新的Linux Kernel都內建支援XenKVM。現在Virt管理工具也做的不錯,但我暫時選擇XenServer。原因為何?Xen已經非常成熟,在多篇效能比較裏,它的CPU使用率都很低,I/O效能也好,加上商用軟體整合性好;我需要有良好UI管理工具,並且要易於安裝,用KVM有不少東西得手動來。

XenServer還有個特點,就是免費版也具有動態搬移VM的功能(Live Motion,在Hyper-V叫Live Migration,在 Hyper-V Server 2008 R2之後具備),可以參考這篇

安裝主機很簡單,步驟可以參考,硬體需求就是CPU要有支援Intel VT或AMD-V,詳情看XenServer 安裝指南。裝好後,找台支援.Net framework 2.0的Windows安裝管理介面Xen Center,隨附在安裝ISO檔裏。

接下來當我在XenServer上安裝VM時,第一個想法就是:「真是麻煩呀!」。它不像Hyper-V Server能夠直接丟ISO檔過去,而是必須讓它mount遠端的網路磁碟。所以我後來幾乎都是利用TrueImage將線上的Server備份,直接在上面還原。

不過裝好以後,效能表現確實令人讚賞呀!請看在下的使用狀況:

註:這台主機是一台商用PC,接了1TB硬碟,16GB RAM,CPU是Core i5-2500

XenServer的guest支援工具(XenServer  Tools)支援Windows及Linux kernel 2.6以上,所以可以看到那台Linux VM(WWW)顯示未安裝支援工具,看不到記憶體使用量,但仍然使用非常低的CPU,若是WIndows主機沒安裝支援工具則會使用較多記憶體。

當然我初期會虛擬化一定是選擇使用率較低的Server,但XenServer的效能實在太令我驚訝!某一台原本是Q6600 4GB RAM的Windows 2003 Server,虛擬化之後居然比實機更快!我不清楚是因為I/O變快還是Xen造成,但是快到使用者點選網頁都有感覺反應變快,不虛擬化的藉口完全消失。

說完優點得說一下缺點:Xen Center免費版能夠調整的很有限,硬體的規格也完全不能改(例如:SATA、IDE、SCSI、模擬網卡類型等等);也不能用Virt連上XenServer,要自己編譯libvirt裝上XenServer也幾乎不可能(不知道為何,但是搜尋到的結果是如此)。也就是說,對我這種技術控來說,這樣的黑箱作業用起來有點毛毛的..

要建立不停機備援得建立Server Pool,XenServer要求兩台完全一樣規格的硬體,因此請期待下集...

參考資料:
  1. XenServer管理指南
  2. Citrix XenServer x86虛擬化解決方案
  3. 詳解Citrix思傑XenServer虛擬化
  4. 射手科技的 XenServer/XenDesktop 虛擬化應用方案
  5. 射手的 XenServer 虛擬化瑣事
  6. Hyper-V vs. ESXi vs. XenServer (有點舊)
  7. KVM(Kernel-based Virtual Machine) + KQEMU
  8. Xen Server Book