Pages

2014-12-31

NOD32加入信任網址

以ESET NOD32 8.x版為例,要加入某一信任網址(被封鎖網站),可以在Setup > Enter advanced setup設定畫面裏,於編號2下拉Menu選定List of allowed addresses, 再新增欲信任的網址。網址請使用編號4的寫法「*.域名/*」,即可存取該網域的任何子頁面。

NOD32 Setup

2014-12-24

Western西聯匯款方式

要匯款到國外,通常使用國外匯款單(即需要對方的國外銀行資訊及英文名字),除了需要對方完整的國外銀行帳戶資訊及高額手續匯費外,這種匯法需要一段時間才能領用。其實更簡便的方法是使用西聯匯款,只需要對方的英文姓名,即可在匯款時得到一組MTCN密碼(Money Transfer Control Number, 10位碼),再告訴對方此密碼,即可讓對方在國外憑身份證取款,比一般匯法時效更快。

這樣的匯款機制是很簡便,但國內大銀行通常不支援,僅京城銀行、大眾銀行才有跟西聯合作。去銀行匯款前,請先準備好以下資訊(換匯營業時間都只到下午3點半):

  1. 收款人英文姓名 (須知道First Name/Last Name拆法)。
  2. 匯款人的英文姓名 (可查護照或信用卡)。
  3. 匯款人當地聯絡電話 (萬一沒領取即可聯絡退回)

接著行員會將匯款(以美金計價)+手續費告知你應繳納的總額,並要求你的身份證件及地址 (會幫你翻譯英文寫法)。最後得到下圖編號6的MTCN密碼,你可以透過網路傳送這張匯款表單照片給對方即可。

Western Form

西聯匯款的手續費列表: (國外匯款無論在匯率或手續費都是挺貴的)

Western Fee

2014-12-17

UltraISO虛擬光碟載入

談到使用虛擬光碟(Virtual Drive)載入ISO的方式,通常是使用Daemon Tools等免費虛擬光碟工具,但它需要Install安裝於系統,總是常駐佔記憶體。UltraISO是一套製作ISO檔的工具(Shareware),它也有提供虛擬光碟支援眾多的光碟格式,加上此套工具持續維護又有人製作免安裝版,因此一直被我用來載入ISO光碟的最佳工具。

在主畫面裏,選擇「Tools」工具列下的「Mount to Virtual Drive (F6)」的選項:

UltraISO MainUI

選擇想要載入的ISO檔或其他光碟格式即可:

Mount UI

系統就會出現一個虛擬光碟機,不用時只要Reject/Unmount即可。

CD Drive

此外,UltraISO提供2個以上的虛擬光碟裝置支援,在其設定選項「Configuration/Virtual Drive」裏即可建立虛擬裝置。

VirtualDrive Config

2014-12-10

CASIO卡西歐電子錶選購指引

從小我就戴指針式鋼錶,成年後為了慢跑計圈或倒數計時需求才購買CASIO電子錶,似乎跟一般人的體驗相反。買過兩隻千元以下的便宜CASIO電子錶後,大概就掌握了CASIO品牌的選購之道。

CASIO電子錶的操作都大同小異,編號1(Mode)按鈕用來切換功能模式,編號2(ADJUST)調整內容值,編號3是該Mode模式下的Preset/Option選項值,編號4則是燈光。有些錶面中間下方會有按鈕,用來控制功能起迄Start/Stop,但錶面按鈕非常不好按,所以儘量不要買這種錶,除非是放少用的LIGHT燈光鍵。常用的設定按鍵,應該放在錶面四周才好按。

image

以下是我個人對CASIO電子錶的選購方式:

  1. 該錶的外表與核心功能絕對排第一位考量,至於價格自己衡量口袋實力。請考慮錶的重量及錶面直徑,像我的手腕較小,就習慣戴重量100g以下,錶面4cm的機型。塑膠錶帶比較輕,但它容易流汗時黏肉,每種機型也不一定會有出鋼帶,所以要注意這些佩帶個人舒適指標。
  2. 購物網站對於該錶的功能規格描述,往往不是你所想像的那樣,因此一定要先至官網下載該型號的說明書。它的說明書是用手錶後面方框數字之「機芯號碼」,Google搜尋請使用「CASIO Module 型號」關鍵字查詢。CASIO網站對於電子錶的硬件規格沒有比較好的一覽表,網站上只是大概區分手錶用途的子品牌,但裏頭的規格得查看機芯說明書才知道。有些手錶網站會整理比較機芯規格,如這篇CASIO運動錶款功能比較表就寫得很好。
  3. 專業錶內建的感應元件Sensor會增加錶的重量及體積,相點也比較耗電,幸虧CASIO電子錶自行換電池很容易(4顆螺絲),只有特殊充電式的電池比較貴。

CASIO常見的狀態顯示之英文縮寫:

STW - Stop Watch 碼表計時
TMR - Timer 倒數計時
DST - Daylight Saving Time 夏令節約
SNZ - Snooze 貪睡鬧鐘
SIG - Hourly Time Signal 整點響報

2014-12-04

NetWorx網路流量記錄刪除

NetWorx是一個免安裝的記錄網路流量小工具,但UI沒有提供修改日期記錄的介面,每次看到統計範圍外的記錄,都覺得挺礙眼的。

NetWorx MainUI

然而,可以透過以下步驟來「手動」刪除不想要的記錄項目:

  1. 使用工具列上的「Backup」將所有記錄存在一個xml檔。
  2. 手動刪除XML檔中不要的item項目,其中day是該記錄時間減去「1899/12/30」的天數,而in/out代表流量bytes。
    XML Item
  3. 在NetWorx主畫面工具列要使用「Reset」清除所有資料,再使用「Restore」匯入已修改後的xml,將能得到範圍內的資料了。

2014-11-12

如何圍浴巾(Bath Towel)?

最近別人送我一條浴巾,但總是圍不好,一下子就掉了。查了網上教學,一般人總是浴巾圍好後會包住尾端往內折(美觀習慣),但這樣很容易掉落。原來同樣的圍法但是包住尾端往外折一圈就不會掉了,如下圖帥男示範。若想要浴巾翻口美觀些,可以挪至腰後面再外翻一圈即可。

Bath Towel

2014-11-05

C# Script表達式執行運算

有些財務系統的計算方式,若能開放給User微調定義,可以增加很多彈性。透過C#的Reflection及Type機制,可以實作運算式的Eval()計算。眾多開源Lib控件裏,我覺得DynamicExpresso寫得最好,架構如下圖:

image

可惜它僅支援單一行的表達式Expression, 要實作邏輯if-else或區域變數的定義,就力有不逮了。後來改用CS-Script這套C# Script引擎,因為它的對象是整個Script,而非在單一表達式運算上,因此在變數定義沒有DynamicExpresso直覺,需要一些巧思才能實作成下圖的方式。

image

值得一提的是,這類使用Reflection及產生CodeDom的即時運算要注意其效能消耗。以CS-Script v3.8.10為例,初始化要700ms,載入Script並Compile編譯要80ms,應用在批次大量計算時,要特別注意寫法。

2014-10-29

範本引擎RazorEngine使用介紹

複雜輸出的字串Template範本,純用字串變數替代法會比較乏力,因此使用一套能持續演進及維護的範本引擎會比較好。在ASP.NET MVC的View Engine裏,Razor語法挺好理解使用的,RazorEngine這免費元件就是把其Razor的表達優點從MVC裏抽出來,可應用在其他用途裏。

RazorEngine Syntax

可以把template內容(編號2)放在任何text file裏,result(編號4)輸出結果為:
RazorEngine Output

值得考慮的是,這元件能否隨著微軟MVC中的Razor版本保持語法更新呢? 在其NuGet官網的發佈版本裏, 從v3.4.x起RazorEngine版本使用Microsoft.AspNet.Razor 3.0.0(僅.NET 4.5(含)以上版本支援),因此.NET 4.0(含)以下的環境需使用v3.3.0版(使用Razor 2.0.30506.0)才能順利安裝。

Version History

PM> Install-Package RazorEngine -Version 3.3.0

不過執行環境允許的話,儘量使用RazorEngine最新版本才能享受到更精簡強大的Razor語法支持!

2014-10-22

自訂系統日期顯示格式

在Win7系統裏,想要修改日期顯示格式,可從控制台的「地區設定」裏去調整。然而,預設日期的格式下拉選單項目是不能修改的,若對其下的樣式項目皆不滿意,可以按「Additional Settings」彈出自訂格式視窗,在日期格式下拉選單中,直接用鍵盤輸入想要的顯示格式。很多人都誤以為下拉選單是唯讀不能編輯的,然而這視窗是例外的,下拉選單允許自行輸入修改

DateFormat

2014-10-15

FlyVPN免費試用連到大陸

大陸地區連到外面一些網路服務要翻牆,往往身處在外地的我們也需要使用大陸IP,這時候可以利用FlyVPN免費試用帳號,進行短時間的測試試用,其簡易步驟如下:

1. 取得FlyVPN Client程式 (單檔免安裝,輸入帳密即可選擇VPN服務器進行連線)

下載: http://www.flyvpn.com/cn/download

FlyVPN Client

 

2. 取得試用帳號/密碼。(密碼會經常改變)
AccountInfo 
免費試用VPN帳戶是為測試和緊急情況下使用,同一個IP每天可以使用免費測試賬戶3次,每次可以使用20分鐘,如需再次使用,請等待5分鐘之後重新連接

3. 連線VPN後,查詢目前電腦IP資訊: http://showip.net/
ShowIP

4. 完成VPN連線,開始使用網路。
TaskIcon

2014-10-08

綁定QQ郵箱輔助帳號

大陸QQ主帳號是一組數字,但當作郵箱帳號,它不太好記憶,因此官方提供輔助帳號,讓你綁定好記的名稱。QQ軟件裏不好找,原來它放在「我的QQ中心 > 帳號」去綁定的。

網址:http://id.qq.com/

QQ Center

QQ郵箱功能其實很好用的,個人覺得比Gmail靈活,尤其它可以預約未來日期寄出信件的功能,出國坐飛機前,先預約寄些個人財務報表給家人,萬一怎麼了,一切都有交待。

2014-10-04

Chrome套件:滑鼠手勢CrxMouse

CrxMouse套件的原名是Gestures for Chrome,到了v2.4後才更名的,是一套功能包括:鼠標手勢,超級拖曳,滾輪手勢,搖桿手勢,平滑滾動,分頁列表的Google延伸套件。

CrxMouse - Chrome 線上應用程式商店
https://chrome.google.com/webstore/detail/crxmouse/jlgkpaicikihijadgifklkbpdajbkhjo/reviews

1. 右鍵頁面滑鼠手勢操作: 基本常用的滑鼠手勢頁面操作方式就不贅述,在其套件Settings設定修改及新增。

手勢「Left/Right - Down」指定為「Close all tabs on the left/right」比較常用。
Close Tabs Gesture

編號1是將剪貼簿Clipboard的URL文字直接開啟,這跟在網址列上按右鍵「Paste and go」同義。編號2是複製該Tab的Title+URL,不過有些頁面無法操作右鍵,因此加裝TabInfoCopy套件是必要的。

Gesture Operation

2. 左鍵Super Drag手勢,針對「文字/連結/圖片」三種元素,使用滑鼠左鍵按住拉曳的操作。

文字Text元素: 編號1-2都設定圈選純文字後拖曳,即可作google文字搜尋。
Text Drag 
連結Link元素: 編號1-2都是將Link另以新Tab背景開啟,節省等待頁面載入時間。編號3是複製Link的文字及URL給別人時很好用。編號4則是複製URL,對於常在下載資源的人非常好用。

Link Drag

圖片Image元素: CrxMouse對圖片元素的拉曳偵測不是很靈光,因此用Chrome的內建右鍵功能就好了。

Image Drag

2014-10-01

多工倒數碼表 MultiTimer

生活裏,假如要多工處理很多事,例如燒開水、洗衣服、下載免空倒數等等,都需要倒數計時器幫助提醒。我試用過多套定時APP,這一套最好用。

image

Google Play下載:
https://play.google.com/store/apps/details?id=com.jee.timer

畫面擷圖:

1. 大方塊列表(Grid),比起一般列表(List)好按。

Grid List

2. 除了倒數時間設定外,你可以在整個時間內設定interval timer,例如每5秒響一下。這很適用在作體能計數及節奏掌控上。

Timer Setting

3. 使用光線感應偵測,關閉提醒。以紅米手機為例,它的光線感應器在左上方,當定時提醒觸發時,只要先把手掌遮在光感器上,再移開即可關閉。這功能對於同時設定多組短時間倒數非常實用,不用再特別沾手操作手機。另外,當提醒響時也可以把手機翻轉,就會變靜音了。

Light Sensor

4. 碼表功能我個人比較少用,也做得中規中矩的。

Ma Tick

5. 手機桌面倒數Widget控件,購買版(NT$70)才能新增2個以上。

Widget

2014-09-24

浮動虛擬按鍵 Back Button

安卓手機的實體按鍵之排列順序隨廠商習慣被固定住了,例如程式切換鍵很常用(多工切換),卻往往卻只有設定Menu鍵。返回(Back)實體鍵的位置或偏左偏右,可能因為自己持機習慣及手的Size而產生困擾,最好的解決方案就是透過浮動虛擬按鍵,自己決定按鍵順序、Size及位置。它也可以安裝有平板,如此切頁不需要移動手指至下方實體鍵,非常推薦。

Back Button

Google Play下載: (手機不需要rooted)
https://play.google.com/store/apps/details?id=com.appspot.app58us.backkey

畫面擷圖:

Screen Settings

手機不支援下方的虛擬鍵,但平板是OK的。按鍵的Size、位置及Style都可以設定,也可以設定透明度,就不會影響前景文字顯示了。

2014-09-17

體重記錄 Simple Weight Recorder

若在積極控制體重變化,推薦這一套簡單實用的體重記錄APP. 它不像其他減重APP弄很複雜的介面,只需要你隨時量測,輸入數字,即可繪製體重變化曲線圖。

App Image

Google Play下載:
https://play.google.com/store/apps/details?id=jp.cbrains

畫面擷圖:
Snapshot

2014-09-15

Skype Full Installer Download

在Skype官網裏的下載,僅提供Windows線上安裝版,其實官網也有提供Windows離線完整版,只是下載連結很隱晦而己。

Skype Logo

以下的link可下載最新Windows桌面離線Skype完整安裝版本:
http://www.skype.com/go/getskype-full

2014-09-10

ASP.NET Global.asax之事件未正常觸發原因

Gloalbal.asax(以下簡稱G檔)是ASP.NET站台在IIS中最先啟動執行的檔案,它的Application_Start(), Session_Start()可以應用在線上瀏覽人數統計等相關應用上,從ASP.NET 2.0以後我都有使用它,歷經很多網站架構的改朝換代,直到使用ASP.NET 4.0之後突然發現其檔案內的Event都沒被突發。網上搜尋的可能方法都試過N遍了,最後才歸納出一些結果。以下研究是以ASP.NET 4.0為例,架構在WIN2008R2 + IIS 7.5下,更舊.NET版本就不在本文研究範疇了。

Global.asax Excluded

當站台要發佈Release到正式主機時,通常我們會在Publish介面把各頁面的源碼編譯成一個Main DLL檔,除了能保護源碼及方便Copy佈署簡單外,頁面載入速度更快(因為CodeFile方式的自動編譯碼似乎會在某時間後被Recycle回收)。以下是以Single Assembly的發佈方式(編號1),而編號2主要的差別是把App_Code下的類別獨立成一個App_Code.dll而己。我個人偏好第一種方式,因為Library會以另外的專案加入,App_Code/下通常只放與專案UI連動的相關函式庫而己。

ASP.NET Publish

Publish前,若根目錄下的G檔存在(未被Excluded),它就會被編譯入主要的輸出DLL內,因此Deploy根目錄下不會出現G檔,並會自動產生「/Bin/App_global.asax.compiled」標示檔。因此,若想讓User日後能修改G檔源碼,記得先把Global.asax遮蔽(Exclude)再Publish,這樣產生的Main DLL就不會含有G檔編譯碼,接著手動將Global.asax複製至Deploy根目錄下,並移除或更名「/PrecompiledApp.config」及「/Bin/App_global.asax.compiled」兩個檔案。

根目錄之「PrecompiledApp.config」標示檔案,它的存在是告訴ASP.NET優先執行Main DLL下的編譯碼版本, 而非最新動態自動編譯的版本(若頁面使用CodeFile即時源碼編譯,則優先執行不受該檔存在與否影響)。因此要手動執行G檔源碼事件,PrecompiledApp.config必須移除或更名,否則會被Main DLL取代(假如它不含有G檔編譯)而不執行了。

最後,了解在Publish相關概念及差異後,若發現站台的G檔事件未能正確執行,也許它因為編譯方式及2個標示檔的存在與否,讓Main DLL檔給Override蓋掉了。

2014-09-03

XAMPP Apache Error: Apache shutdown unexpectedly

啟動XAMPP Apache時,常常會遇到這問題:
Apache Error
90%原因是因為Apache的Httpd Port: 80與SSL Port:443與系統目前的衝突,例如系統若裝有Skype, IIS或VMware都會有這樣的衝突問題。然而,上述的訊息不是很清楚誰衝突到了,因此可以執行XAMPP目錄下的程式:
c:\xampp\apache\bin\httpd.exe
若是Server用途,要調開佔用的程序,若是測試開發性質,則改XAMPP Apache Ports即可。可以利用XAMPP Control Panel的工具來檢查目前的通訊埠使用狀況(編號1),再調整*.config(編號2)的內值,例如httpd.conf裏80埠改81埠,httpd-ssl.conf裏443埠改444埠。
XAMPP Control Panel

2014-08-27

SQL Express免費版資料庫限制

SQL Server Express是免費版的SQL Server,主要差別是檔案Size的限制,超出時錯誤如下:

Limit Size Error

SQL Express 2005/2008
1CPU, 1GB RAM(Per Instance), 4GB DB Size (Per Database Size)

SQL Express 2008 R2/2012/2014
1CPU, 1GB RAM(Per Instance), 10GB DB Size (Per Database Size)

SqlExpress Logo

2014-08-20

MVC的App_Code裏的自訂類別無法被引用?

當你在MVC專案裏想在App_Code目錄下新增Helper類別,你會發現在專案裏總是無法使用它,明明都有using namespace路徑仍是看不到。原來該Class檔案右鍵屬性裏的Build Action預設是Content,必須改成「Compile」該Class才能被辨別。

App_Code Custom Class

一個平時沒注意的小細節,總是讓人白白花了好多時間尋找原因。

 Build Action

2014-08-13

提高程式SQL字串的易讀性

查詢資料通常會依UI輸入條件,最後得到要送往DB執行的SQL字串,以下面查詢畫面為例:

Query Conditions

常見的組合SQL字串之實作方式約有:

  1. 在字串接龍裏,透過IF-ELSE判斷輸入來組合SQL文串,然而邏輯判斷及SQL字句夾雜,維護不易,加上還要考慮WHERE AND的字句及分頁語法,混亂不堪。
  2. 撰寫特殊的SQL Composer物件,依UI控制項輸入加入相關SQL子句,最後輸出完整字串。其缺點是要查看及測試SQL字串不易,遇上很複雜的多個SQL指令文本,愈寫愈複雜。

以上的作法我都實作過,甚至為了跨不同資料庫對於不相容的SQL語句作自動轉換(如LIMIT分頁),但總覺得不是很滿意,因為程式裏的SQL字串應該要能「非常輕易」貼到管理工具去交叉測試執行才對。因此提出了以下的寫法,既簡單又好理解,供大家參考。

SQL String

先將要執行的完整SQL做好斷行排版及註解(這是程序員的專業素養),再加入StringBuilder類別(加上@即可斷行),每一個過濾條件前加入辨別代碼(標示1-2),最後再判斷UI控制項上是否有輸入值,替代文本變數即可。

Replace Identity Phrase

本身這些AND條件就已註解不會執行,替代成空白字元等同執行,如此一來非常好維護SQL及作事前的資料測試。我也習慣在SQL文本前端加入SQL變數宣告,方便程序員作測試及提醒輸入條件的參數指定。