星期二, 12月 11, 2012

ASP.Net 同時使用Windows Authentication與Forms Authentication混合認證 Mixed Security

最近主管又指示我寫一個小東西,要讓員工及有往來客戶都能使用。所以網站建置在內網,再利用Proxy導向對外網站。但是內網(Intranet)的用戶仍然要使用Windows Authentication(aka NTLM Authentication),而且Windows認證不支援proxy,除非使用Windows 的特殊proxy或丟到Windows Azure雲端。

這下我就很頭大了,只有找到Asp.net 1.1 的 Mixing Forms and Windows Security in ASP.NET,下載安裝還是不成功。幸好帥學弟之前就有Survey過,提供兩個參考資料:How I Made Windows Authentication and Forms Authentication Work Together 與  Combining Windows Authentication with Forms Authentication in ASP.NET 。

星期三, 11月 07, 2012

兩個Windows下的email client

因為敝公司許多人仍然在使用具有2GB限制的Outlook Express,由於他們大都又想要非標準的分割郵件功能,因此我之前推薦Windows Live Mail

但是新版Windows Live Mail的介面改得像Outlook而不像Outlook Express,所以許多使用者向我反應說用不習慣。雖然可以調整成類似Outlook Express的顯示,但功能表變成Ribbon仍然讓許多LKK望之卻步,所以我抽空找了兩個MIC的eMail Client。

第一個是DreamMail,介面挺漂亮的,功能也不少,只可惜似乎不能設定為IMAP。



第二個是我10年前就試過的FoxMail,功能很完整,支援IMAP、IMAPS、SMTP、SMTPS,行事曆,通訊錄它叫地址簿,是另一個獨立視窗,但不影響功能完整性。它也具備信件範本功能,可以自訂美美的信紙。



特別一提,具有在本機保留備份的功能,覺得信件很重要的人,可以放心選用IMAP。

我個人目前是推薦FoxMail啦。這兩個軟件都有官方綠色版,沒有安裝權限的一般使用者也能下載使用,非常方便。


星期一, 10月 29, 2012

在Linux使用Guard-LiveReload

因為 LiveReload 的App並不支援Linux,所以也必須手動安裝。此處我就以 Ubuntu/Mint來安裝。

星期五, 10月 26, 2012

在Windows使用Guard-LiveReload

基本上,在Windows使用Guard-LiveReload,就是要用命令列,所以沒興趣的人就可以跳過。

星期五, 10月 19, 2012

在ASP.Net防止 SQL Injection和參數篡改

看到保哥貼了 Hacking is child's play ,就算有參數化SQL指令,但使用者輸入資料(例如討論區等)還是很難防,所以小小做個筆記。

星期三, 10月 17, 2012

在Ubuntu 12.04 安裝Nginx

昨天有個新聞,房價實價登錄網站一上線就爆了。雖然我很久沒有玩高流量網站,不過相信一般的IIS或Apache肯定是撐不住的,所以就來玩玩目前最夯的Nginx

星期一, 10月 08, 2012

在Mac上將檔案編碼預設為UTF-8 的方法

這問題困擾我好幾年,終於找到答案了。

幾年前Linux上的Console都改為預設UTF-8,Mac OSX在10.6之後也跟進,也就是說:除了Windows之外,其他平台的繁體中文語系都預設為UTF-8,而不是彆腳的Big5。

星期四, 9月 13, 2012

P2V或V2V轉換後VM再起不能解決方法之Windows篇

通常P2V或V2V程式類似TrueImage Enterprise,具備異機還原功能,也就是會把Windows的HAL重置。 但是並不是所有的程式都有此功能,例如免費的Disk2vhd,我轉換了幾台線上機器還沒有能開成功的 :(

所以在此要公布我私藏的秘技,幫助有需要的MIS朋友。

P2V或V2V轉換後VM再起不能解決方法之Linux篇

  通常P2V或V2V都會用軟體,類似TrueImage之類可能還有Windows異機還原的功能,但是Linux就沒辦法,所以得要想辦法處理。

星期二, 9月 11, 2012

VMware Player/Workstation更換硬碟型態

VMware Player或VMware Workstation的vmdk和ESXi不同,是真正的虛擬磁碟,所以更換硬碟型態是要改VM的vmx檔,先確定OS安裝好driver後就可以開始變更。

如何在Windows XP/2003啟用SMP/多核心/多CPU

這不是新東西了,只是因為朋友換電腦,因為i7的核心多,希望讓過去使用的VM改設定為多CPU或多核心時,卻還是只顯示一顆CPU單一核心;這情況在換電腦時拔硬碟過去時也可能發生,因此簡單記錄一下。

首先,找出安裝光碟/iso,假設是E: ,就在『開始』->『執行』依序執行以下指令(或用cmd.exe一次執行):
expand e:\i386\halmacpi.dl_ c:\windows\system32\halmacpi.dll
expand e:\i386\ntkrnlmp.ex_ c:\windows\system32\ntkrnlmp.exe
attrib -r -h -s c:\boot.ini
notepad c:\boot.ini
將 C:\boot.ini 中
最後一行 multi(0)disk(0)rdisk(0)partition(1)\WINDOWS... 最後加上
 /kernel=ntkrnlmp.exe /hal=halmacpi.dll
存檔後關閉,在『開始』->『執行』輸入
attrib +r +h +s c:\boot.ini
重新開機後,會偵測到硬體變更,會要求再重新開機就是SMP支援了!


註:
  1. HAL變更後,再把boot.ini改回去,仍然會是SMP的狀態,若看到老外別人寫2個boot選項,那是沒用的。
  2. 上述檔案從已經啟用SMP的XP/2003複製過來覆蓋過去也有效。
  3. 由於XP Professional最多只支援2顆CPU,因此在需要較多計算核心的狀況下,VMware等可以設定VM使用一個CPU多核心。
  4. 對Windows 2000有興趣的朋友可以試試 如何疑難排解 Windows 2000 硬體抽象層問題,基本上我試過失敗,用升級安裝重來才搞定

星期六, 9月 01, 2012

Ubuntu Server安裝vmware tools

Ubuntu Server安裝vmware tools不如在CentOS或Redhat Enterprise方便,還需要自己編 module。

Guest -> Install/Upgrade VMware Tools
$sudo apt-get install build-essential
$sudo apt-get install linux-headers-$(uname -r)
$sudo mount -o ro /dev/cdrom /mnt
$cd /tmp
$umount /mnt/VMwareTools*.tar.gz
$cd vmware-tools-distrib
$sudo ./vmware-install.pl
接下來一直按Enter就好
如果更新kernel,就必須再裝新的header,重新編modules
$sudo apt-get install linux-headers-$(uname -r)
$sudo vmware-config-tools.pl

星期一, 8月 20, 2012

三大伺服器虛擬化技術比較

這一年來我試用了Hyper-V、XenServer以及VMware vSphere ESXi,現在將測試結果列表如下:
ESXiXenServerHyper-V
執行速度最快普通
iSCSI 存取速度普通
細部設定
作業系統相容性最高普通普通
Windows相容性最高
Linux相容性最高
FreeBSD相容性有(2012年8月新增)
HA價格普通
Cluster價格$FreeFree
Live Migration價格$FreeFree
SmbFS 儲存
* Hyper-V可以在未安裝VM Tools的狀況下Live Migrate,非常強大!
** VMware可以將硬體不相同的伺服器加入HA cluster,Hyper-V和XenServer都需要相同的CPU、RAM甚至於完全相同的網路。

Hyper-V的IO實在太慢了,我個人覺得是敗在NTFS的效能差,我現在查不到WinFS的時程,所以就暫時不考慮在公司使用。另一個在下覺得比較重大的缺點是在未安裝vm tools的情況下不能在console使用mouse,許多boot cd都變得很難用或不能用。

以企業使用,若不介意不容易修改細部設定,又缺乏第三方備份軟體支援的情況,XenServer是不錯的選擇。個人使用測試的話,Hyper-V Server功能完整,又有廣泛支援,值得考慮。在銀彈充足的情況下,就別想太多,衝VMware ESXi吧!

P.S. 最後我選擇的是VMware vSphere Essentials Plus Kit,比起CPU定價,算是小公司可以負擔,而且也足以撐起全公司的Server。

Update :參加完 Tech Days 2012後,我要說當初太不瞭解Server 2012。若要真實測試Hyper-V 3.0,請準備『符合Server 2012的硬體』,再啟用SMB 3.0當做共用儲存空間,雖然說Server 2012不需要共用儲存空間也行,但有還是比較好。 至於我的比較,大家就當做我在放屁就好,非客觀第三方測試! 對此有興趣的朋友請參考Microsoft Windows Server 2012 Hyper-V compared to VMware vSphere 5.1

星期四, 8月 09, 2012

How to install VMware ESXi 5 tools for FreeBSD 9

There are some problems while install FreeBSD 9 vmware tools on VMware ESXi 5 update 1, after searching a few hours, I got the solution.  You will make the new binary from source, thus no more COMPACT 6 in kernel configuration.

在VMware ESXi 5 update 1安裝vmware tools有不少問題,經過幾個小時的奮戰,終於找到答案。
首先要強調,不需要在Kernel設COMPACT 6,但是需要裝compact6x的package。以下用藍色標明需要key的指令:
  1. Install compact6x package
    #cd /usr/ports/misc/compat6x
    #make install clean
  2. Mount the cdrom image from vCenter/vSphere Client to guest vm.
    #mount -t cd9660 -o ro /dev/cd0 /mnt
    若你已經試著裝過,cd0 可能會變成acd0,就改成
    #mount  -t cd9660 -o ro /dev/acd0 /mnt
  3. Extract the source code.
    #cd /root && tar xzf /mnt/vmware-freebsd-tools.tar.gz 
    #cd vmware-tools-distriblib/modules/source
    #tar xf vmblock.tar && tar xf vmmemctl.tar && tar xf vmxnet.tar && tar xf vmxnet3.tar
  4. Compile the vmblock module.
    #cd vmblock-only
    #make && make install & cd ..
  5. Compile the vmmemctl module
    #cd vmmemctl-only
    #make && make install && cd ..
  6. Compile the vmxnet module
    #cd vmxnet-only
    Get the patch.  Update: ESXi 5.1 doesn't need this patch. 已經不需要patch.
    #fetch http://ogris.de/vmware/vmxnet.diff  # Not needed for ESXi 5.1
    #patch -p1 < vmxnet.diff  # Not needed for ESXi 5.1
    #make && make install && cd ..
  7. Compile the vmxnet3 module
    #cd vmxnet3-only
    Get the patch. Update: ESXi 5.1 doesn't need this patch. 已經不需要patch.
    #fetch http://ogris.de/vmware/vmxnet3.diff # Not needed for ESXi 5.1
    #patch -p1 < vmxnet3.diff  # Not needed for ESXi 5.1
    #make && make install && cd ..
  8. Install the vmware tools, it you don't have perl then you have to install one from ports.
    接下來要安裝vmware tools,若沒有安裝Perl則必須從ports選個版本安裝。
    #cd /root/vmware-tools-distrib
    #./vmware-install.pl
  9. Finally, halt the vm. Change network adapter to "VMXNET 3", then boot the vm.
    最後,VM關機。將網路卡換成VMXNET 3,重開機。
    You will see vmx3f0 instead of em0, replace it in /etc/rc.conf.
    會看到vmx3f0而不是em0,所以在/etc/rc.conf也要對應修改。

網路從1000Mbase-T變成10Gbase-T,再來看載入了哪些modules,輸入kldstat

最後看看狀態

會需要patch的原因是FreeBSD 9將ifnet中的watchdog/timer架構分離出來,所以已經沒有if_watchdog和if_timer。最好還是VMware自己更新FreeBSD tools,以上的patch只是將watchdog和timer的呼叫從module中移除(我本來也有考慮這麼幹),不知道會不會因此穩定度降低?若有疑問的朋友還是繼續用E1000網卡。(這需要瞭解FreeBSD kernel的朋友踹共)

另一個方法是直接從ports安裝 open-vm-tools ,但是沒看到vmxnet3的ko,應該是只有支援vmxnet,而且還會安裝fuse和glib。若想用 open-vm-tools ,記得不能用LLVM clang編譯,只能用gcc。

參考資料:
VMware 虛擬化技術實務問答 (上)
VMware_Tools_安裝
Choosing a network adapter for your virtual machine
Installing VMware Tools on FreeBSD 9
VMware Tools on FreeBSD 9.0 patch

星期三, 8月 01, 2012

Why I moved to VMWare 為何我換成VMWare

I installed XenServer last year (2011/07), because it is fast and free. Before that, I had tried Hyper-V 2.0 Server,it's slower than XenServer.

Last month, I wanted to add a FreeBSD vm and got bad experience. Another problem, it is very hard to modify vm setting on XenServer.
My boss asked me to do server 100% virtualized, I had to search better solution.
After googling a few hours, I decided to move to VMWare vSphere.

Why? Because I need FreeBSD vm tools installed to get more control, besides I found VMWare Essentials Plus Kits,it's not as expensive as I thought.

Then I installed a test vm server, it's amazing! ESXi 5 Server gave me a whole new experience. It's fast and powerful, with so many APIs and 3rd party tools.

Now, I got very good vm hosts, a stable and fast environment.  Thanks VMWare, I can work easier.

去年評估虛擬化Server後採用XenServer,使用一年也沒有什麼大事,但是支援的作業系統太少始終是個遺憾。會採用XenServer而不用Hyper-V 2.0除了Hyper-V的Linux支援度差外,另一個重要原因是效能不夠好。

主管和我說要讓伺服器100%虛擬化,包括我目前使用的FreeBSD Mail Server,所以只好只找solution。

原本對Hyper-V 3.0滿心期待,但是經過測試後,雖然說功能很強,但是效能遠不如XenServer,所以還是出局。

目前市場上的VM Server,也只剩下VMWare vSphere ESXi支援FreeBSD,幾經探訪才知道有VMWare Essentials Plus Kits的套裝售價,廠商報價不到30萬台幣,對小公司來說還可以負擔,只是我對192GB的限制有些不滿,用ESXi 4.1還有256GB,怎麼到ESXi 5.0反而縮水了?

於是拿我原本測試Hyper-V 3.0的PC來安裝VMWare ESXi 5.0,結果還超出我的預期!免費版有1 CPU unlimited cores、32Gb的限制,但對測試機來說太夠了。

安裝簡單就不提了,看看我的測試環境:
主機不過是台Acer的商用PC,我自掏腰包加到8GB RAM,以及兩張Realtek 8169  1GB網卡。Storage是向JCNet借來的nexenta storage server,提供iSCSI服務。

由以下這兩個VM的資源圖可以看出,在閒置時Active的CPU和Memory其實很少。
另一台
另一個值得讚賞的是VMWare Converter,轉換後自動安裝VM Tools,之後要來測FreeBSD,成功後會再另外貼文。

星期五, 7月 20, 2012

升級到Mac OS X 10.8 Mountain Lion

因為手癢,所以就把手上的2009 Macbook Pro 13"升到OS X 10.8 GM。(叔叔練過的,小朋友不要學)


基本上沒有太大的改變,大部份的API都相容,所以應用程式幾乎都可以直接執行,VM軟體除外,所以我的VirtualBox暫時不能用。要注意Java有改變,所以暫時不能用Oracle Java VM,但是Apple Java VM仍然有提供。

要怎麼自動安裝Java呢?基本上就是啟動「Java 偏好設定」 (Java Preference)就可以了;位置在 「應用程式」->「工具程式」裡。
如果遇到錯誤訊息安裝失敗,得打開「應用程式」->「工具程式」->「終端機」,手動刪掉Java相關檔案。
sudo rm -rf /System/Library/Java/* && sudo rm -rf /Library/Java/* && sudo rm -rf /System/Library/Frameworks/JavaVM.framework/*
如果還不行...就等著正式版出來,Apple修正Bug吧XD

星期二, 7月 17, 2012

Entity Framework 5 Code First 遇到 context has changed 的問題

我在做一個Asp.net MVC 4 + Entity Framework 5 RC的專案遇到一個問題,就是新增加的Model做
當初是Code First開發,而且我什麼都沒做就很正常地運作。但是後來我再加上一個Model Class後,居然就不會自動更新。錯誤訊息是
The model backing the 'XXXXContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269)


那個連結會導到這裡,不完全解答我的問題。這裡有高手介紹Entity Framework 4.3.1的做法。

我就想說Let it be,不要再繼續Code First,接下來手動就好,找到在DbContext Class加上這個method
protected override void OnModelCreating(ModelBuilder modelBuilder)
   {
       modelBuilder.IncludeMetadataInDatabase = false;
   }
很可惜,在Entity Framework 5.0 RC改了,所以要寫成
protected override void OnModelCreating(ModelBuilder modelBuilder)
   {
       modelBuilder.Conventions.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
   }
這樣就不會去檢查資料庫是否比Context舊。

Update: 不知為何又不行了,只好回過頭找Package Manager Console失敗的原因,發現packages不知何時多裝一個EntityFramework 4.3.1,砍掉之後重新啟動Visual Studio,後來就可以正常Mirgation。

星期一, 7月 16, 2012

恆溫熱水器的迷思

我在2009年就換了強制排氣數位恆溫熱水器,在2010年發生接頭堵塞的情形。最近則是愈洗愈熱,但是熱水的出水量並沒有明顯減少。

因此今天找原廠來維修,將功率調小一點。我上網查過,每個人的說法不一,有些人說將溫度調低直接洗,有些人說調高一點加上冷水洗;事實上根據能量守恆,若出水量足夠時應該是調剛好的溫度洗最能確保恆溫。

那麼我的問題是什麼呢?其實我家是舊公寓,雖然十年前有將冷水管換掉,五年前又將熱水管也換了,但是沒有加壓馬達,加上管線比較長,熱水的出水量是6L/min,維修師傅調整水閥後變成7L/min;師傅說出水量最好有8公升以上,不過6公升其實就可以正常運作。因為數位恆溫熱水器是靠燒瓦斯,必須有個最低火量,若我調成37度,水量6L/min時大概會變成48度,所以就算加上冷水都很熱。當初裝機的師傅並沒有將最低瓦斯量調低,所以我2009年時就必須開冷水才是剛好的溫度,各位裝機時最好直接調好。

另外有朋友問是否能兩間浴室同時使用,我買的12L數位恆溫熱水器就表示最大出水量12L時仍能正常工作,但這前提是水量與瓦斯量都能負荷。例如說閣下的熱水龍頭出水量8L/min,兩間同時使用就必須要用16公升機型才足夠,但若是天然氣壓力不足時,仍然會不夠熱。所以我在夏天時兩間浴室同時使用,由於天氣很熱,所以沒有問題;但是冬天時出水量已經超過12公升,就會覺得不夠熱了。

星期四, 6月 07, 2012

閒聊平價機械式鍵盤

今天晚上抽空跑了一趟光華商場,到金鍵盤去選購一支較安靜的鍵盤,順便向老闆請教差異。

  • 青軸:二段式,第二段有清脆聲音。反饋壓力小,有明顯段落感。
  • 茶軸:二段式,第二段無聲。 反饋 壓力小(個人覺得比青軸大),有明顯段落感。
  • 紅軸:一段式,反饋壓力小(比茶軸重一點),無段落感。
  • 黑軸:一段式,反饋壓力大,無段落感。

選鍵盤還是得現場試,才會知道差異。
金鍵盤老闆人很好,把許多之前搞不清楚的地方全都弄懂,並且告訴我各家鍵盤的特色,簡單整理如下:
  • Cherry
    Cherry機械式鍵盤通常都四千多元,品質沒話說,用料好,做工細,很難卡鍵。但是...
    二千元上下的Cherry是其他廠OEM,品質就和價錢成正比。例如:我現在試二千元的紅軸明顯比四千元的紅軸重,反彈時感覺較不順暢。
  • FILCO
    品質沒話說,和Cherry原廠沒什麼太大差別。可惜沒有平價鍵盤。
  • Ducky
    用料比以上差一點,技術普普,因此Ducky的鍵盤會有較大阻力,所有的鍵盤都會有變重的感覺,尤其是大L(L型大Enter)鍵內有兩個Cherry軸會更明顯;但是個人不能接受數字鍵也很重的感覺。
  • ione
    用料比Ducky又差一點,但 技術 較Ducky好。鍵盤打字感覺不錯,老闆稱之為『平衡』技術做的好。
我目前在辦公室用的iOne青軸就Shit卡了好幾次,又因為辦公室同事常抗議我打字太大聲,本來很想買支好點的茶軸;後來因為價格因素,還是選了iOne的茶軸,主要是老闆說卡鍵可以拿去修,一個鍵50元。其實我的青軸自己拆開來修兩次了,下次若再掛得拿去金鍵盤修理。

說實話,這支茶軸真的不算好,剛拿來用時space有點卡卡的,幸好打一陣子後就比較順。若不是同事抗議,還是青軸的反饋感較得我心。

參考資料:機械鍵盤中的經典軸-Cherry MX青軸

星期三, 5月 02, 2012

在Linux環境中讓Apache使用NTLM認證

簡單地說,就是我不想再用Windows Server開發,但是又需要NTLM/AD整合認證,所以只好DIY自力更生。

Ubuntu 12.04還是用Apache 2.2,所以就以Apache 2.2為主。

星期二, 5月 01, 2012

Ubuntu 12.04的ruby

不知為何,Ubuntu 12.04只有ruby 1.8和ruby 1.9.1,這樣很難相信它是一個最新的套件。
結果後來才發現它有ruby-rvm的套件,所以我就
sudo apt-get install ruby-rvm

升級至Ubuntu Server 12.04

這次在XenServer裡把Ubuntu Server 10.04 LTS升級到Ubuntu Server 12.04 LTS的過程很怪異,以前在Desktop用的sudo apt-get dist-upgrade無效。

搜尋後發現Server必須要用
sudo do-release-upgrade -d
有些說明檔寫do-release-upgrade是不夠的。

我在XenServer裡升級,有些無效的repository必須先手動移除,不知為何我必須移掉台灣的Ubuntu site才行。原本用ssh連線會有問題,所以直接在console作業。

升級完後再起不能,原本想說是不是XenServer不支援,沒想到不知哪裡來的靈感,把vm的boot parameter移掉就好了,就是原本的:
-- quiet console=hvc0
這次算是是有神助呀,等等得去拜乖乖大神!原來是升級用的kernel版本有問題,開進去之後再sudo apt-get install linux-image-3.2.0-24 linux-headers-3.2.0-24 ,重開前記得把boot parameter,就一切正常! (之後再 sudo apt-get remove 'linux-image-2.6.*' )

星期五, 4月 27, 2012

求出n取k組合的列表 Objective-C 版

這是本灌水系列最後一篇,到此已練功完成。
如果有其他語言需要解答,我找到這裡有各種不同的程式語言版本(缺Objective-C XD);此站看來是學生作業的好幫手呀。

星期三, 4月 25, 2012

測試Windows Server 2012 beta Hyper-V Cluster

Windows Server 8 beta在2012年2月就可以下載,我現在才有空試,主要是測試Hyper-V 3.0的強大功能。因為現在有消息指出會更名為Windows Server 2012,所以我也把標題改為Server 2012 beta。
Server Core介面很可惜沒有Cluster的選項

星期一, 4月 23, 2012

測試Hyper-V Server 2008 R2 SP1

這次測試和上回的硬體一樣,只是把Windows Server 2008 R2 SP1 Enterprise改成Hyper-V Server 2008 R2 SP1,主要是測試免費版是否有收費版本的功能

安裝時Hyper-V Server比較簡單,也不用啟動,裝好就是Server Core。然後...登入後自動會啟動 sconfig.cmd ,一樣照著選單設定遠端管理、網路設定和容錯叢集等,就可以利用具有管理介面的其他電腦遠端管理。

接著我就同樣建立一個failover cluster,在cluster上建立虛擬機器,用Hyper-V管理員同樣都很正常。

根據Weithenn的文章,Hyper-V Server幾乎有Enterprise版Server Core的所有功能,最大的差別就是不能新增角色和不具備"Application Failover"的功能。

這樣好像沒寫什麼有用的資訊...Orz

好吧,開始放炮,以下的資訊純粹是嘴炮。

Hyper-V cluster預設不會啟用叢集共用磁碟區,必須手動啟用,一點都不直覺;啟動叢集共用磁碟區後又要手動新增存放裝置,預設也不會把共用磁碟放進來。

VMWare與XenServer都有獨特的協調機制,在cluster下可以自由調度VM放在另一台電腦主機,平時可以將VM平均放於cluster內的所有電腦,好處是不只有CPU的資源分享,網路速度也很重要。這兩個產品也有iSCSI的寫入cache,所以會覺得VM在iSCSI上執行速度比Hyper-V快。

我對產品並無特別品牌喜好,但是微軟絕不是省油的燈,所以接下來要測Windows Server 8 beta的Hyper-V,敬請期待。

星期四, 4月 19, 2012

求出n取k組合的列表 JavaScript 版,同場加映 CoffeeScript版

廢話就不說了,現在的JavaScript比起十幾年前真是好寫多了,語法這幾年來也沒有大改版,所以我這兩年花點時間學了一下現代的JavaScript語法,但程度仍然低落。

星期三, 4月 18, 2012

星期二, 4月 17, 2012

星期一, 4月 16, 2012

在獅子Mac OSX Lion裝GCC

在2009年我曾經在Linux上頭編譯GCC,因為GCC的授權在4.2.1版之後由GPL v2改為GPL v3,Apple就不再更新GCC。幾年下來造成編譯器版本過舊,蘋果自己也開始打造自己的clang:基於LLVM的compiler;所以現在OS X上有clang和llvm-gcc兩個編譯器,都是LLVM compiler。

但目前來說,GCC相容性仍然是比較好,而且支援很多新的語言特性。像是Ruby的RVM目前就不支援 LLVM 編譯1.9.3之前的版本,只能用GCC。但很不幸地,目前Mac上很方便的套件工具 Homebrew 並不能直接安裝 GCC ,要用別的方式,詳見 
brew install https://raw.github.com/Homebrew/homebrew-dupes/master/gcc.rb

星期日, 4月 15, 2012

求出n取k組合的列表 Lisp版

廢話就不多說了,這次改寫Lisp版本的求組合列表,由於太久沒寫,著實吃了不少苦頭。由於Lisp版本眾,我本來想用Emacs開發,可是我把Emacs的hotkey全忘光了,只記得c-x c-e,後來就改用GNU CLispGCL),以Homebrew安裝的2.49版為主。

星期五, 4月 13, 2012

求出n取k組合的列表 Ruby版

為增加篇幅,今天來到functional programming,也是以求出組合為例。
有了functional的能力,加上Ruby的syntax sugar,同樣功能的code變得真少,相信真正會寫Ruby的人可以寫更少。

星期四, 4月 12, 2012

測試Server 2008 R2 SP1 Hyper-V Cluster

我之前測試Hyper-V Server的內容似乎沒有記下來,這次重新測試Server 2008 R2 SP1 Hyper-V Cluster,發現趙驚人的書實在是鉅細靡遺,但還是把自己容易疏忽的地方寫下來,未來要架設時才有跡可尋,不致於重蹈覆轍。

趙驚人在研討會多次重申,Hyper-V要效能好,就要灌Server Core,胡士亮在V-Day也這麼說。所以這次我的目標是要達到企業級的虛擬化,灌Server Core,而且要做Cluster達成HA。題外話,趙驚人真不愧是留美碩士,英文發音超標準,國內很少講者有他的水準。

星期日, 4月 08, 2012

求出n取k組合的列表 C++版

同樣是求出n取k組合的列表,今天要寫C++版本。

C++可以寫得很優雅,也可以像我一樣寫得像C。(我承認,真的太多年沒寫C++ XDDD)

星期六, 4月 07, 2012

星期五, 4月 06, 2012

求出n取k組合的列表 CSharp版

同事要找出n中取k的所有組合列表,他想出了一個很簡單的表示法。例如說3取1會有3個,就表示為
001、010、100
這的確是再簡單不過,非常清楚也利於程式使用。他使用的方法是寫一個int, 用for迴圈,從1到2的n次方-1的數字跑一遍,再把每個數字的位元做比對。

但是問題來了,數字小時這樣沒什麼問題,但是他的樣本n超過int的長度,只好改用long,而且光是long就跑很久,最近遇到的問題還超過long〈超過64個〉。

星期五, 3月 30, 2012

再探Xen Cloud Platform

為了徹底測試Xen Cloud Platform(以下簡稱XCP)是否具備Live Migration及HA的功能,鳥毅耗費鉅資把兩台相同規格的PC裝上12GB RAM及兩張Gigabit NIC。

先灌好兩台,分別叫做xcp1與xcp2,接著利用XenCenter 6.0連上XCP,再設定網路連線到iSCSI,把Windows VM放在iSCSI Storage上。

再來得建立ServerPool,把Windows VM 從xcp1 Live Migrate到xcp2,結果非常順利,和XenServer 6沒什麼差別;由此可知確實己經實作免費版的功能。

最後測試HA,利用XenCenter點在ServerPool上會看到HA的分頁,也可以設定,但是按下確定時會有錯誤訊息,表示此功能尚待實作。

Xen Cloud Platform己經具備XenServer大部份的功能,若要做到企業級HA,則得再等一陣子了。

星期四, 2月 23, 2012

讓Windows Live Messenger 不顯示廣告

收到朋友轉寄的Email,出處不可考,內容是如何讓Windows Live Messenger 不顯示廣告。
原文用0.0.0.0的IP,這樣會delay,所以我改為127.0.0.1,再補充UAC部份

=====================

  1. 用記事本打開 C:\WINDOWS\system32\drivers\etc 目錄裡的 hosts (若是Windows Vista以上有UAC,必須以管理員身份執行記事本或其他文字編輯器)
  2. 將以下內容加到 hosts 檔最後面

    127.0.0.1 rad.msn.com
    127.0.0.1 rad.live.com
  3. 打開 MSN,在選單上選擇『工具』->『選項 』 -> 『 訊息 』 ,若看不到選單,按一下Alt就會出現。在第二段的 [對話] 項目中, 取消 『 在對話視窗中顯示展開的頁尾 』 的勾選, 再按 『 確定 』 。
這方法不用Patch軟體,升級後依然有效。

星期二, 2月 07, 2012

FreeBSD上在Roundcube使用Managesieve

久違的個人備忘錄又來了。

環境:FreeBSD 9.0-Release+Postfix+Dovecot 1.2

因為我把Webmail換成Roundcube後,就沒有郵件規則可設,之前都懶得去看怎麼設定sieve+ManageSieve,趁今天難得有空趕緊來改一下。

安裝:
#cd /usr/ports/mail/postfix
#make config #我選Dovecot而不是Dovecot2,懶得改設定檔了,差很多

#make install clean

#cd /usr/ports/mail/dovecot
#make config #記得要選 MANAGESIEVE
#make install clean
#cd /usr/ports/mail/dovecot-sieve
#make install clean
#cd /usr/ports/mail/dovecot-managesieve
#make install clean

#cd /usr/ports/mail/roundcube
#make config #請選擇你要用的database
#make install clean


首先看一下Sieve Plugin怎麼設,還有ManageSieve的設定,在 /usr/local/etc/dovecot.conf 修改為:

protocol lda {
...
  mail_plugins = sieve #可以再加上其他的plugin
}
protocol managesieve {
  login_executable = /usr/local/libexec/dovecot/managesieve-login
  mail_executable = /usr/local/libexec/dovecot/managesieve
  managesieve_logout_format = bytes ( in=%i : out=%o )
}
plugin {
...
  sieve = ~/.dovecot.sieve #一定要設這個名字,因為Roundcube的managesieve plugin預設用這個
  sieve_dir = ~/sieve
}

還有其他FreeBSD上的設定
protocols = imaps imap pop3 pop3s managesieve
disable_plaintext_auth = no
mail_location = mbox:~/mail/:INBOX=/var/mail/%u
mail_privileged_group = mail
first_valid_uid=1 #因為我有些user不是500開始,500是Dovecot的預設值

接下來要設定Postfix,若不是虛擬 user 只要在 /usr/local/etc/postfix/main.cf 改一個地方就夠了。

mailbox_command = /usr/local/libexec/dovecot/deliver


至於Roundcube相關設定這裡就不寫了,記得要改 /usr/local/www/roundcube/config/main.inc.php ,啟用managesieve的plugin。

是不是沒事了?不,保證你會遇到問題,請看Mailbox Locking,就是要:
 #chmod a+rwxt /var/mail
現在
#/usr/local/etc/rc.d/postfix restart
#/usr/local/etc/rc.d/dovecot restart
在Roundcube就可以設定了

星期一, 1月 30, 2012

星期四, 1月 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化嗎?)

星期二, 1月 03, 2012

換冰箱

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

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