前陣子去某大公司的面試,前兩關都是很普通的問題,例如求學經歷、工作經歷等等,正在心情略微放鬆之際,第三關的壓軸考官丟出了一個從沒遇過的問題 :「如果你的主管交付給你一項很不合裡的任務,請問你會怎麼辦?」
幸好在遲疑了兩秒以後有勉強擠出一個回答,但這次驚悚的體驗讓我仔細的思考了一陣子,在面試時若要展現敏捷的反應,除非應試者天生就是才思敏捷,不然對於很多人來說,要有好的表現恐怕有相當的難度。一個可行的準備方法就是利用平時的空閒時間,預先模擬面試時可能會遇到的各種問題,並且記錄下來,有空就多思考,每隔一段時間根據新的思考和經驗來更新這些想法,面試時才能有好的表現。
目前彙整的題目在這裡,包括「職場倫理」、「主管相關」、「公司背景」、「工作經驗」、「個人特質」、「求學經歷」、「技術能力」、「.NET技術」、「其他/想像力/創造力」等類別共40題,如果有什麼想法的話可以留言聯絡我和砍尼 :)
以下測試 Google Spreadsheet 產生的內嵌 iframe 長什麼樣子:
2009年9月21日
2009年9月18日
[Tips] 在方案總管(Solution Explorer)中顯示未加入專案的資料
有鑒於坎尼同事不知道 visual studio 還有很多很好用的功能
以後會不定時推出 Tips 系列,說明一些好用的小技巧
讓 visual studio 不只是用來當文字編輯器 (那還不如用 notepad++)

點選之後,會出現淺灰色的資料檔或資料夾
2009年8月31日
開發windows mobile 6.5 widget程式
前陣子坎尼去了幾場 windows mobile 的研討會
老師有提到開發 widget 的技巧
所以今天稍微來談一下 window mobile 6.5 上的 widget 開發
裡面有含模擬器的映像檔,待會兒會用模擬器來執行程式
接著是開發環境
windows mobile 6.5 的 widget 全為 html 組成
因此只要有能寫 html 的編輯器即可
坎尼就直接引用 bauann 大所寫的 Widgets in Windows Mobile 6.5 - 簡介
大家可以直接看這篇,比坎尼寫的詳細多了 :D
剛剛提到 widget 由 html 構成
坎尼用 visual studio 開了個 html 檔,並加入下圖所示的網頁元素

"Show Messages" 按鈕會在 DIV 之中顯示使用者填入的字串
"Moving" 則是移動下方的灰色 div 到亂數位置
接著是此次的 javascript code
從下圖可得知,坎尼加入了 jquery 來開發

移動 div 的部份,坎尼用 jquery 的 animate 和 fadeOut 去展現動態效果

接著把 html、jquery-1.3.2.min.js、Config.xml 還有要作為 logo 的 e04.png
利用壓縮程式壓成 zip 檔案,接著把副檔名改為 .wgt
這樣一來, widget 的安裝檔就完成了,趕快放到模擬器上試試看吧

直接在 windows mobile 6.5 中點選 wgt 檔即可安裝

安裝好會自動開啟程式,來測試一下成果

應該是硬體受限的緣故
原本寫好的 html 在 pc 上會有動態淡出淡入的效果
但到了 windows mobile 上,效果就不見了
IV. 解除安裝
這裡提一下如何解除安裝
請依照下圖步驟:Start -> Settings -> System -> Remove Programs
再選擇要解除安裝的 widget 程式即可

但很多動態的表現不如 pc 上來的順暢
所以最好著重在功能性的開發
由於為 html,動態資料交換就必須利用 Ajax 及 WebService 等技術
但若能用 jquery 從中當作媒介,相信會簡單許多
(也不用像研討會王老師講的,寫AJAX寫到快哭了 XD
本篇粗淺的介紹一下 windows mobile 的 widget
有錯還望高手們來指正 :)
老師有提到開發 widget 的技巧
所以今天稍微來談一下 window mobile 6.5 上的 widget 開發
I. 戰前準備
首先要有 windows mobile 6.5 的執行環境,可以到 這裡下載 DTK裡面有含模擬器的映像檔,待會兒會用模擬器來執行程式
接著是開發環境
windows mobile 6.5 的 widget 全為 html 組成
因此只要有能寫 html 的編輯器即可
II. 開發
由於很多人都寫過相關的開發方式坎尼就直接引用 bauann 大所寫的 Widgets in Windows Mobile 6.5 - 簡介
大家可以直接看這篇,比坎尼寫的詳細多了 :D
剛剛提到 widget 由 html 構成
坎尼用 visual studio 開了個 html 檔,並加入下圖所示的網頁元素

"Show Messages" 按鈕會在 DIV 之中顯示使用者填入的字串
"Moving" 則是移動下方的灰色 div 到亂數位置
接著是此次的 javascript code
從下圖可得知,坎尼加入了 jquery 來開發

移動 div 的部份,坎尼用 jquery 的 animate 和 fadeOut 去展現動態效果
III. 安裝部署
接著是建立 config.xml 檔,讓 widget 安裝檔能被 windows mobile 6.5 辨別
接著把 html、jquery-1.3.2.min.js、Config.xml 還有要作為 logo 的 e04.png
利用壓縮程式壓成 zip 檔案,接著把副檔名改為 .wgt
這樣一來, widget 的安裝檔就完成了,趕快放到模擬器上試試看吧

直接在 windows mobile 6.5 中點選 wgt 檔即可安裝

安裝好會自動開啟程式,來測試一下成果

應該是硬體受限的緣故
原本寫好的 html 在 pc 上會有動態淡出淡入的效果
但到了 windows mobile 上,效果就不見了
IV. 解除安裝
這裡提一下如何解除安裝請依照下圖步驟:Start -> Settings -> System -> Remove Programs
再選擇要解除安裝的 widget 程式即可

V. 小結
雖然 widget 提供 html 的開發方式但很多動態的表現不如 pc 上來的順暢
所以最好著重在功能性的開發
由於為 html,動態資料交換就必須利用 Ajax 及 WebService 等技術
但若能用 jquery 從中當作媒介,相信會簡單許多
(也不用像研討會王老師講的,寫AJAX寫到快哭了 XD
本篇粗淺的介紹一下 windows mobile 的 widget
有錯還望高手們來指正 :)
2009年8月27日
輕鬆使用MS Chart Control - 親愛的,我把餅切開啦
之前在 簡單設定圖表外觀 裡有提過
將圓餅圖裡的 Exploded 屬性設成 true
即會使圓餅分開,令使用者有互動的感覺
本篇還會提到善用特定關鍵字來讓互動事件更多元化
坎尼還放了個 Label,等下要顯示點擊訊息
(Chart 的樣式設計就不多談了,請自行發揮)

接著設定 Label 顯示文字
這裡用的是 #PERCENT 關鍵字,顯示 Y 值所佔全部的百分比
後面的 P1 則是精確度的 Format

LegendText 則設成 類別 : 所佔百分比

重要的 PostbackValue 則是放入了三個關鍵字
#INDEX:表示此項資料所在的索引位置
#VALX 和 #VALY 分別是 X 軸及 Y軸的值
並用「 , 」把三個值給分開

II. 後端程式碼
資料繫結部份請直接看下圖

接著撰寫 Click 事件
利用 String.Split 方法將組合而成的 PostbackValue 給切開
切開的值依序分別為:Index、X、Y
將 Index 傳入 Chart1.Series[0].Points 中以取得點選的 DataPoint
再將 CustomProperties 的 Exploded 設為 true
如此一來,被點選的資料點即是顯示為分離狀態
再將 X 及 Y 值丟到 Label 上顯示
最後再補個目前時間,大功告成!!!!


可以看到,圓餅圖上標籤顯示為百分比
而圖例標籤上則是名稱加百分比
點選之後,該資料點呈分離狀
Label上的訊息為資料名稱及滿意度的件數
還有很多個關鍵字沒介紹,有興趣的人可以自行研究一下
本次的範例下載
將圓餅圖裡的 Exploded 屬性設成 true
即會使圓餅分開,令使用者有互動的感覺
本篇還會提到善用特定關鍵字來讓互動事件更多元化
I. 設計圖表
首先,當然是先放個 Chart 到頁面上坎尼還放了個 Label,等下要顯示點擊訊息
(Chart 的樣式設計就不多談了,請自行發揮)

接著設定 Label 顯示文字
這裡用的是 #PERCENT 關鍵字,顯示 Y 值所佔全部的百分比
後面的 P1 則是精確度的 Format

LegendText 則設成 類別 : 所佔百分比

重要的 PostbackValue 則是放入了三個關鍵字
#INDEX:表示此項資料所在的索引位置
#VALX 和 #VALY 分別是 X 軸及 Y軸的值
並用「 , 」把三個值給分開

II. 後端程式碼
資料繫結部份請直接看下圖
接著撰寫 Click 事件
利用 String.Split 方法將組合而成的 PostbackValue 給切開
切開的值依序分別為:Index、X、Y
將 Index 傳入 Chart1.Series[0].Points 中以取得點選的 DataPoint
再將 CustomProperties 的 Exploded 設為 true
如此一來,被點選的資料點即是顯示為分離狀態
再將 X 及 Y 值丟到 Label 上顯示
最後再補個目前時間,大功告成!!!!

III. 成果

可以看到,圓餅圖上標籤顯示為百分比
而圖例標籤上則是名稱加百分比
點選之後,該資料點呈分離狀
Label上的訊息為資料名稱及滿意度的件數
IV. 小結
利用關鍵字可省去不少麻煩還有很多個關鍵字沒介紹,有興趣的人可以自行研究一下
本次的範例下載
2009年8月18日
由文字取得指定長度的 byte 陣列
坎尼最近在研究.NET中資料加解密的方法
可是網路文章和MSDN翻著翻著,發現似乎少了什麼...
原來是要傳入的 byte[] array 參數不是寫死的就是沒寫 (可隨機產生
所以坎尼寫了個小方法,可以把使用者自訂的文字轉為 byte 陣列
接著會呼叫 UTF8Encoding 的 class,將文字先轉換為 byte 陣列
由於會指定陣列長度,由自己輸入的字串轉出來大多是不符合需求
所以用個 for 迴圈取出指定長度的資料即可 (程式碼見下圖)

坎尼參照 聖哥 的 這篇「如何加密字串」寫了個 TripleDES 加解密的函數
使用加密方法
需先取得長度為 16 的 Key 及 IV 的陣列 (可為不同內容)
然後呼叫加密的方法即可

使用解密方法
只要反其道而行即可,但注意 KEY 及 IV 需為同樣的陣列

點下「加密」按鈕即會加密

點下「解密」即可將加密過內容解出來
若是金鑰不同就會發生例外,向量不同則是文字可能會有亂碼

打完收功
但每次都用同一組或是要重新建一組實在是很麻煩
所以提供這個範例給大家參考
當然有更好的方法也歡迎大家分享出來給其他有需要的人 :D
可是網路文章和MSDN翻著翻著,發現似乎少了什麼...
原來是要傳入的 byte[] array 參數不是寫死的就是沒寫 (可隨機產生
所以坎尼寫了個小方法,可以把使用者自訂的文字轉為 byte 陣列
I. 取得陣列方法
方法會要求傳入三個參數:要轉換的文字、長度不足要補上的byte、陣列長度接著會呼叫 UTF8Encoding 的 class,將文字先轉換為 byte 陣列
由於會指定陣列長度,由自己輸入的字串轉出來大多是不符合需求
所以用個 for 迴圈取出指定長度的資料即可 (程式碼見下圖)

II. 使用方式
再來就是上網找加解密的方法啦坎尼參照 聖哥 的 這篇「如何加密字串」寫了個 TripleDES 加解密的函數
使用加密方法
需先取得長度為 16 的 Key 及 IV 的陣列 (可為不同內容)
然後呼叫加密的方法即可

使用解密方法
只要反其道而行即可,但注意 KEY 及 IV 需為同樣的陣列

III. 成果展示
輸入要使用的 KEY 及 IV,接著輸入要加密的內容點下「加密」按鈕即會加密

點下「解密」即可將加密過內容解出來
若是金鑰不同就會發生例外,向量不同則是文字可能會有亂碼

打完收功
IV. 小結
金鑰是加密演算法中十分重要的一環但每次都用同一組或是要重新建一組實在是很麻煩
所以提供這個範例給大家參考
當然有更好的方法也歡迎大家分享出來給其他有需要的人 :D
V. 參考資料
2009年8月12日
基礎數學觀念-3: 與「零」有關的基本性質
接下來要整理的是「零」的性質,還有一些我們認為是理所當然的數學運算性質的推導,例如為什麼 0 乘以任何數結果都是 0 ?為何 3*(-2) = –6 等等。
要討論這些問題,必須要了解以下基礎知識:
(另一個例子是,在電腦的二進位世界中,負數也是透過正數來定義的,只要在正數最前面的bit上動個手腳就可以表達負數)
利用以上兩個公設可推導出以下結果:
(第一個推導如果把0換成零向量,就是某年的研究所考題)
透過以上推導的過程,可以體會到如何以基礎理論,來逐步建構出更上層的理論,整個數學體系就是像這樣一步一步慢慢建立起來的。
以上的性質被證明出來以後,一個明顯的好處是可以加快計算速度,雖然從小的填鴨式教育讓我們認為這是理所當然的性質,但其實也是需要證明的!
備註:以上資料是我從向量空間(vector space)的講義裡面整理出來的,不太確定「一維歐式空間」跟「數系」有沒有差異,如果有錯誤的話煩請指正,謝謝 ^_^
補充資料:
同系列文章連結:
要討論這些問題,必須要了解以下基礎知識:
- 向量空間(vector space)
- 皮阿諾公設(Peano axioms)
- 向量加法(實數加法)具有單位元素(0):也就是說,任何數加上0等於任何數本身
- 向量加法(實數加法)具有反元素(加法反元素):例如:3 的加法反元素是 -3(在前面加上一個負號),使得 3+(-3) = 0(加法單位元素)
(另一個例子是,在電腦的二進位世界中,負數也是透過正數來定義的,只要在正數最前面的bit上動個手腳就可以表達負數)
利用以上兩個公設可推導出以下結果:
(第一個推導如果把0換成零向量,就是某年的研究所考題)
透過以上推導的過程,可以體會到如何以基礎理論,來逐步建構出更上層的理論,整個數學體系就是像這樣一步一步慢慢建立起來的。
以上的性質被證明出來以後,一個明顯的好處是可以加快計算速度,雖然從小的填鴨式教育讓我們認為這是理所當然的性質,但其實也是需要證明的!
備註:以上資料是我從向量空間(vector space)的講義裡面整理出來的,不太確定「一維歐式空間」跟「數系」有沒有差異,如果有錯誤的話煩請指正,謝謝 ^_^
補充資料:
同系列文章連結:
2009年8月8日
基礎數學觀念-2: 整數和偶數的元素個數相同
繼上次整理過的數學歸納法的證明及應用之後,接下來要看跟集合論(Set Theory)這個基礎數學中的重要基礎有關的一些有趣性質。
集合論中元素個數相等
如何證明兩個集合X、Y元素個數相等?最直覺的想法是:把集合X和集合Y的元素個數算出來,若兩個集合元素個數相等,就得證。但總是會遇到天不從人願的時候,若剛好兩個集合X、Y為無限集(元素個數無限),就無法計算出集合X、Y的元素個數了。
因此數學家想出一個方法:利用消去法來證明。也就是將集合X中消去一個元素,就同時將集合Y中也消去一個元素。重複執行此動作,若可以將X與Y中的所有元素都消去的話,便可證明這兩個集合元素個數相等。([Wikipedia] Cardinality: 1. Comparing sets)
這個將兩個集合中對應元素消去的動作,以函數的觀點來看稱為:一對一且映成函數。因此要證明兩個無限集的元素個數相等,就可轉換為設法在兩個無限集之間找到一個一對一且映成函數,只要能夠定義出這個函數,便可證明兩個無限集的元素個數相等。(像這樣將問題轉換為利用其他已知理論、工具來解決的能力,真的需要好好培養...)
以下的證明看完以後會有種「世界變了」的感覺:
(以下集合均為無限集)
從以上性質的推導可以感受到數學的嚴謹性,一切都根據已知的定理、定義來推導,不摻雜一絲不理性的因素(e.g. 感覺、猜想),而這些人格特質對於程式的開發、除錯也是很重要的,如果不去仔細思考背後的原因,而老是將發生錯誤的原因歸咎到沒有放乖乖之類的迷信,那是很難進步的。
下一篇預計整理的是「零」的性質,還有一些我們認為是理所當然的數學運算性質的推導!
集合論中元素個數相等
如何證明兩個集合X、Y元素個數相等?最直覺的想法是:把集合X和集合Y的元素個數算出來,若兩個集合元素個數相等,就得證。但總是會遇到天不從人願的時候,若剛好兩個集合X、Y為無限集(元素個數無限),就無法計算出集合X、Y的元素個數了。
因此數學家想出一個方法:利用消去法來證明。也就是將集合X中消去一個元素,就同時將集合Y中也消去一個元素。重複執行此動作,若可以將X與Y中的所有元素都消去的話,便可證明這兩個集合元素個數相等。([Wikipedia] Cardinality: 1. Comparing sets)
這個將兩個集合中對應元素消去的動作,以函數的觀點來看稱為:一對一且映成函數。因此要證明兩個無限集的元素個數相等,就可轉換為設法在兩個無限集之間找到一個一對一且映成函數,只要能夠定義出這個函數,便可證明兩個無限集的元素個數相等。(像這樣將問題轉換為利用其他已知理論、工具來解決的能力,真的需要好好培養...)
以下的證明看完以後會有種「世界變了」的感覺:
(以下集合均為無限集)
- 證明整數和偶數具有相同的元素個數
明明整數就包含單數和偶數,結果整數的個數居然還是跟偶數一樣多?那單數跑到哪裡去了?
- 證明整數與自然數具有相同的元素個數
根據相同的推導方式得到的這個結論也很神奇,明明整數就包含負數和自然數,但是整數的個數還是跟自然數一樣多?那負數又跑到哪裡去了呢?
- 證明正奇數(odd number)是可數集合(正奇數與自然數具有相同的元素個數)
最後這個結論也很有意思,自然數除了正奇數以外,當然包括了正偶數(even number),但最後又證明出自然數的個數和正奇數相同,那麼正偶數又跑去哪裡了呢?
從以上性質的推導可以感受到數學的嚴謹性,一切都根據已知的定理、定義來推導,不摻雜一絲不理性的因素(e.g. 感覺、猜想),而這些人格特質對於程式的開發、除錯也是很重要的,如果不去仔細思考背後的原因,而老是將發生錯誤的原因歸咎到沒有放乖乖之類的迷信,那是很難進步的。
下一篇預計整理的是「零」的性質,還有一些我們認為是理所當然的數學運算性質的推導!
訂閱:
文章 (Atom)
Google Spreadsheet 裡用規則運算式
最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D
-
好久沒開 Chart Control 議題了 剛好前陣子 Codeplex 出現可以輕鬆建立 Excel 檔案的 Library- NPOI 於是坎尼想說研究一下,看能不能把 Chart Control 匯出圖片到 Excel 中 沒想到只花了不到1小時就研究...
-
雖然在圖片上直接按右鍵就可以另存圖片 (沒設定權限的話 不過客戶還是想要有個按鈕能讓圖片下載 所以坎尼只好再想辦法滿足客戶的需求 UI設定 首先,在畫面上準備好下載按鈕和圖表 順便設定一下樣式和內容,這部分之前講過很多次就不多談了 撰寫按鈕事件 先宣告 System.IO.Mem...
-
拖稿拖了好幾天 坎尼夢見了富檻出新連載 所以上來把欠的東西還一還 (富檻快給我畫 坎尼廢話就少講一點 直接進入 自訂分頁 Sample 首先,畫面上要有個 Gridview 這邊坎尼偷懶用了 SqlDataSource 見下圖 可以看到 Pager 已經出現了 來看一下...



