2013年8月31日

World Community Grid 新聞更新 & 推薦 BOINCManager 7.0.65 版

不知不覺間我註冊成為 World Community Grid 的 member 已經超過 5 年了,過程中雖然沒有很驚人的大新聞,但這個 project 還是持續改進中,例如前陣子的新聞:

除此之外,最近在Download頁面也發現一個新的改變:
2013-11-16更新:目前最新版為7.2.28,參考release note

其中提到可從柏克萊大學網站下載新版的BOINCManager,目前是 7.0.65 版,試用到目前為止覺得很不錯,主要介面改成這樣:


多了一個 Notices 頁籤,可以方便追蹤 WCG 官網的最新消息。

最好用的是多了一下這個 Preferences 可以設定:


其作用是當系統中有任一指定的 application 正在執行時,BOINC Manager 會自動將 Tasks 暫停(進入 Suspended 狀態),如此就不會影響到其他 application 的效能了!

雖然不知道官網的下載頁面何時會把最新的 7.0.x 版推薦給所有 member,但是想嘗鮮的人 or 一直會因為執行如 VirtualBox 等耗資源的 App 而要手動把 BOINC Manager 關掉的人,就建議改用最新版囉!

2012年9月14日

C.C. Agile 聚會心得-1

坎尼有幸報名了 C.C. Agile Spint 1
所以就跑去聽聽大家 Run Agile Development Process 的心得
Teddy 風趣地用了三個例子解釋他對敏捷開發精神的體悟
(而且 Teddy 講話的聲音和方式真的很像Bill叔 XD)

雖然坎尼關注 XP 許久 (以及最近入門的 Scrum)
但仍然像 Teddy 講的,拿了駕照,但車還是沒開出地下室
主要的原因其實聚會裡都有提到:環境不允許,又沒能力去改變現況

所以就有人問到如果老板不支持怎辦?
坎尼的答案跟 Teddy 很像:既然無法說服,有 guts 一點就把車先偷偷開出去再說
但在開出去之前真的要先確認是不是真的都掌握到相關知識
不要油門和離合器分不清楚、方向燈在哪也不知道、雨刷永遠停不下來就很好笑了

以前看 XP (eXtreme Programming) 的文獻時
Kent Beck 提到最重要的就是不要害怕改變,而是要去擁抱改變
但 MIS 老師卻說:組織裡的員工會抗拒改變「我工作好好的,幹嘛學新的東西」
不確定性太高的事物是不容易讓人接受的

坎尼曾經有偷偷的導入新技術,但沒跟老板講
等專案成功了再說這是 XX 新技術做的,老板當然覺得這東西可以導入
所以還安排了幾次教育訓練分享其他工程師同仁們

但坎尼還是覺得這樣的方式並不是個好的解決方案!
逆練九陰真經久了,一不小心就會走火入魔!

如果無法說服老板,就先把敏捷精神銘記在心
然後一項一項的把方法導入團隊裡:TDD、CI、Daily Standing Meeting...
如果方法不合用,也不要強求,以免練身體練到得內傷

今天胡言亂語就到這邊好了,會不會有第二篇心得就再說囉 XD
另外提供敏捷宣言 英文 中文 讓有興趣的朋友參考

2012年8月16日

[ASP.NET] 在不同的 ContentPlaceholder 中設定 ControlID

有在用 MasterPage 的朋友都知道 ContentPlaceholder
而且主頁中可以放多個 ContentPlaceholder 來讓畫面更有變化且更有彈性
但如果是這種情況,可就要小心本篇中提到的問題囉

I. 多個 ContentPlaceholder

tmp01
可以看到,MasterPage 中可以一次放入多個 ContentPlaceholder
所以坎尼建了個 TooManyContentPlaceholder 的頁面,並選擇這個主頁
tmp02 今天有個需求是要依輸入條件撈出所有符合條件的資料
於是很合情合理的先在畫面上放個輸入框,令使用者可以輸入查詢條件
再放個 Gridview 來顯示條件
不過為求方便,就用 ObjectDataSource 來和取得資料的方法溝通
tmp03 由於坎尼自訂的方法 GetAllData(String MyName) 需要傳入參數
於是就把 TextBox1.Text 當成參數來源設定給 ObjectDataSource 使用
tmp04最後把 GridView1.DataSourceID 設定成畫面上的 DataSource
好了,測試沒問題就可以把程式交付給客戶了~ 樂勝~ 樂勝~

(把頁面跑起來)

tmp05
080725112520xmitead 
啊是在玩我是嗎?
ID也是你叫我設的,我也選了 (詳見圖3及圖4),現在你跟我說找不到 ID (翻桌)

II. 冷靜


好,我們平心靜氣
經過谷歌大神的一番指導之後,坎尼發現完全找不到解決方案 XDDDD
因為大家都在談的是 MasterPage.FindControl 這個問題 (坎尼很久之前也有寫過一篇)

但在一陣誤打誤撞之後,不小心被坎尼試出來了:
若要設定不同 ContentPlaceholder 裡的 ControlID, DataSourceID, TargetControlID…請用該 Control 的 UniqueID

(就是長的像 ctl00$ContentPlaceholder1$TextBox1 這類的ID)

tmp06
把 DataSourceID 和 ControlID 改成 UniqueID 之後,頁面就正常運作了
tmp07

III. 小結


這次遇到這個問題的心得是:谷歌不是萬能 XD
所以記下這篇讓它更聰明一點

此次的範例下載

2012年8月15日

[ASP.NET] 調整傳給 DataSource 的參數值

最近在用 ObjectDataSource 時發現,取回的資料與預期不符
稍微研究一下,發現是參數在搞鬼
於是寫了這篇範例給以後有遇到相同問題,或是有調整參數值需求的人

I. 程式碼配置與情境說明


功能需求取回符合時間區間的登入資料
所以畫面上配置了兩個日期輸入框,以及一個送出按鈕
接著則是 Gridview 及 ObjectDataSource
odp01
給 ObjectDataSource 呼叫的方法則是到資料庫取得資料
可以看到有兩段 where 的判斷式,分別判斷該不該加入起始或結束的條件
odp02
參數的資料來源就是畫面上的兩個輸入框文字
傳入到 Method 的型別則是 DateTime? odp03
寫好之後開啟虛擬伺服器看運作情況
嗯…Great! 看起來沒什麼問題
odp04
但是!!
如果這麼簡單就結束,坎尼就不用寫這篇了…
由下圖可以看到,當日期條件是同一天時,則會顯示不出資料
odp05 嗯,難道這是父親節的詛咒嗎?
0

II. 偵錯

於是坎尼開了偵錯模式開始追蹤問題在哪
odp06
odp07
很幸運的馬上就找到問題點了:

傳入的 DateTime 參數如果只有日期的話,會自動設定在00:00
在 8/8 00:00 ~ 8/8 00:00 之間當然找不到資料
此時較好的解法就是在傳入時把值抓出來做調整之後,再送去查詢

問題是,要在哪個事件攔截參數?
odp08
沒錯,就是在 DataSource 的 Selecting 事件!
處理步驟如下:(可搭配上圖一起使用)
  1. ObjectDataSourceSelectingEventArgs.InputParameters 取出參數
  2. 將參數轉型
  3. 處理參數值
  4. 存回參數裡
如此一來查詢的區間就會在 0 時到 24 時之間

坎尼突然想到以前公司同事都是用字串傳日期,加上 00:00:00 和 23:59:59 之後再去 parse,好像也是個不錯的土法煉鋼的方法啦…

再把網頁跑起來一遍,查詢區間都設定為 2012/8/8
odp09
很好,有資料了! 收功!

III. 小結

所有的 DataSource 物件皆有 Selecting 事件
但需要處理參數的大概只有 ObjectDataSource

另外處理參數的時候要注意轉型和 Nullable 型別的判斷
否則可能測試時沒問題,但一上線就有機會發生例外!

此次的範例下載 (不含資料庫)

2012年7月15日

在Apple Online Store欲用教育價購買產品,需注意刷卡人&收貨人需為同一人,且有學生身分

前陣子買了 iMac 21.5" (Mid 2011),本來想在 Apple Online Store 上用教育價優惠(借用女友的學生證),結果過程非常不順利。聽說以前用教育價購買是不需經過身分驗證的(另有一說是只會抽驗),但現在一律必須將身分證明文件(電子檔)寄給 Apple 客服。

基本上只要學生證正反面影本電子檔即可,若是父母買給子女,要另外附上身分證正反面影本以證明親子關係。但我明明寄了學生證正反面影本電子檔,Apple 客服還是鬼打牆說我沒有提供身分證明文件,一怒之下就退單,用其他方式購買了。

退單後女友很認真的打電話去問,結果客服說「下單的人、刷卡的人、收貨的人最好都是同一個,也就是有學生身分的那個人,這樣審核比較容易通過」(看起來好像也不保證會通過),但是從往返的 email 中完全看不出來這一點,只是不斷重複要求我提供身分證明文件。

希望有需要用教育價買 Apple 產品的人可以成功,看來真的是越來越難了 ~~

2012年7月12日

快把你的密碼改成完整的英文句子 (Pass Phrases)

Openfind 2012 Solution Day 筆記中我提到「運用一般家用硬體,在 1 秒內即可破解任何 8 位數(含)以下的密碼」,因此密碼長度基本上是越長越好。從當兵的時候開始為了滿足長度&複雜度的要求,我都用注音輸入法的順序當做密碼,例如「林益世」就是「xup6u4g4」,通常這樣的密碼不但長度夠,而且複雜度也夠。


問題是開始使用 Smartphone 以後,這樣的密碼就變得非常難輸入,沒有桌上的標準尺寸鍵盤,根本就記不住注音符號對應到哪些英數字/標點符號,因此有一段時間都把密碼改為比較簡單的密碼,但這樣風險就變高了。


幸好前陣子看到 Jeff Atwood 的 Passwords vs. Pass Phrases 這篇文章,於是我開始把自己常用網站的密碼都改成完整的英文句子,好處包括:

  1. 長度絕對足夠,且包含標點符號。
  2. 容易記憶,與其用家人的生日「1900/01/01」,不如改為「Tim's bDay was January 1st.」、「My s0n's 1st Xmas is sooo great!!」等句子,並且故意把「英文o,數字0」、「英文l、數字1」之類的字元交替使用(多用英文的網路慣用簡寫),強度更強。
  3. 在 mobile devices 上容易輸入,因為都是英文+數字+標點符號。

以下是測試結果。
  • Microsoft Windows Live ID (Hotmail, SkyDrive)
    • 密碼長度:6~16個字元,不允許使用空格。沒有密碼強度提示。
  • Google Account (GMail, Calendar, Drive...)
    • 密碼長度: 沒有明確標示,但可使用長達22個字元的密碼。輸入第8個字元時強度由medium變為strong,不符合現況!
    • 兩階段驗證設定方式
  • Yahoo! Account (Yahoo! Mail)
    • 密碼長度:6~32個字元,有密碼強度提示,輸入第6個字元時強度由「密碼無效」變為「甚強」。
  • Apple ID (iTunes Store, iCloud)
    • 密碼長度:8字元以上,輸入第17個字元的時候強度由moderate變為strong。 可使用長達22個字元的密碼 。
  • Dropbox
    • 密碼長度:沒有明確標示,但可使用長達22個字元的密碼。奇怪的地方是新密碼不用重複輸入兩次。
  • Evernote
    • 密碼長度:沒有明確標示, 但可使用長達22個字元的密碼。沒有密碼強度提示。
  • Plurk (噗浪)
    • 密碼長度:沒有明確標示, 但可使用長達22個字元的密碼。沒有密碼強度提示。
  • Facebook (臉書)
    • 密碼長度:沒有明確標示, 但可使用長達22個字元的密碼。輸入第8個字元時強度由medium變為strong,不符合現況!
    • 兩階段驗證設定方式
  • Skype
    • 密碼長度:6~20個字元,沒有密碼強度提示。
  • Battle.Net
    • 密碼長度:8~16個字元,輸入第11個字元時強度由「中等」變為「強」。
  • PayPal (2012-07-17更新)
    • 密碼長度:8~20個字元, 輸入第11個字元時強度由「一般」變為「高」。
目前看來長度比較危險的是微軟的Windows Live ID & 暴雪的帳號,但暴雪還有手機動態密碼鎖可以保護,因此還是比較安全的。

2012年7月3日

Openfind 2012 Solution Day 筆記

去年也有參加 Openfind Solution Day,今年主題是開創個資防護、郵件安全新浪潮 (協同溝通x內容感知x主動稽核),所有的簡報檔在這裡

承襲去年的優良傳統,最值得聽的 session 是第二場-Xecure Lab 執行長 邱銘彰 (Birdman) 的「從 APT 攻擊剖析 2012 郵件安全技術趨勢」。其餘的 session 都還不錯,自家產品講解的蠻清楚。

CEO Ivan 引用的影片很讚:Scientists Make Easter Island Statue Walk,實驗證實只要 18 個人就可以搬動重達 1萬公斤 (10公噸) 的 Moai 石像,在 2012.10 個資法預計正式上路以後,只要超過 20 個人就可形成團體訴訟,單一案件最高賠償金額 2 億,足以扳倒一家公司。

以下是這次聽到的一些重點:
  • 運用一般家用硬體 (用 nVIDIA 顯卡上的 GPU 透過 CUDA 架構以平行運算的方式來執行暴力破解),在 1 秒內即可破解任何 8 位數(含)以下的密碼,因此若你的密碼小於等於 8 位數,那不如直接設一個字元就好了,意思是一樣的。建議密碼最小長度是 16 位數。由此引申的重點是,若某網站限制密碼長度為 6~8 or 8~12 字元,等於是自廢武功,非不得已最好避免使用這網站。(Google 帳號可支援長達 30 字元的密碼)
  • APT 攻擊 (Advanced persistent threat) 無法利用傳統防毒軟體來阻擋,因為防毒軟體靠的是在 global 散怖的病毒的特徵碼,但 APT 攻擊是針對少數人(公司高層或者可接觸重要資料的人)特別精心設計的,郵件總數可能最多幾十封,因此無法找出特徵碼。以往進行病毒郵件的演練都強調「不要開啟來路不明的郵件」,但 APT 攻擊往往是偽裝成你的上司/熟識的同事來發信,來路都很明,因此極難防範。
  • 近幾年來駭客最愛用的攻擊手法是 Document Exploit,利用 MS Office Files (.doc/.xls/.ppt) & PDF 檔發動攻擊,Xecure Lab 有個線上 APT 偵測服務 - XecScan,我認為這是除了 virustotal 以外大家應該要記住的服務(記住名字用 Google 搜尋即可),收到可疑的文件檔案就趕快丟上去掃描一下,若被判定為有問題,立刻打電話跟發信人求證。
  • Flame 病毒是近年來最可怕的病毒,它是先盜取微軟的數位簽章,將惡意程式簽署以後,再透過 Windows Update 散佈!可說是達到駭客夢寐以求的聖杯,因為地球上所有的防毒軟體都不會阻擋微軟的數位簽章。由此引申出來的重點是,簽章本身固然牢不可破,但駭客不需要設法破解簽章,只要多一個步驟,設法先盜取簽章即可 (Stuxnet 病毒使用的是台灣竹科廠商的合法簽章),這是目前資安防禦上很大的一個盲點,畢竟要辨識「合法的簽章是否被惡意使用」是非常困難的。
Openfind Solution Day 大約在每年 7月左右舉辦,全程免費,而且緊接在 CEO 之後的第二個 session 都請外部資安專家來演講,非常值得一聽,中午有提供便當,下午有 tea time,過程中會抽獎,有興趣的人可以訂閱 Mail 2000 部落格來得知最新消息!

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D