2010年1月10日

[VS2010] 在 Visual Studio 中加入 InstallShield 專案

坎尼看到 soma 的文章
Building setup and deployment packages in VS 2010

想說沒用過 InstallShield,所以動手來裝裝看

I. Install And Create InstallShield's Project

首先,打開 vs2010 beta2 (還沒裝? 快下載體驗一下吧 :D
(i) 選擇新專案 -> Other Project Type -> InstallShield 2010

(ii)若是第一次打開,visual studio 會自動導到 InstallShield 的網頁
(這邊填些資料就可以下載了

(iii) 下載畫面,下載完請執行安裝檔進行安裝 (vs2010 可以不用關


(iv) 確認安裝成功之後,重覆 (i) 的動作,這次真的跳出 InstallShield 專案啦
(可以看到圖示和第一張抓圖不同


嘩~ 感覺畫面還蠻酷炫的,不知道和以前的版本一不一樣?
這要請用過的人出來說明一來啦  :)


II. Conclusion

坎尼還真的沒玩過用 InstallShield 做安裝檔
以後要是有什麼產品要發佈,就用這個來做好了 哈 :D
不過話說回來,原本的 Setup 專案不知道有沒有什麼突破?

2010年1月5日

[Share] 學習 Chart Control 的資源

今天來介紹些學習 Chart Control 的資源



I. Blogs

Alex Gorev's Weblog
Alex 為 Chart Control Forum 的板主
之前在 Dundas 服務了八年,目前在 SSRS Data Visualization team 工作,
SSRS 及 .NET Framework 裡的 Chart Control 也是來自於這個 team 的研發


Scott Mitchell's blog
Alex 最新一篇推薦的 blog
待會兒會介紹這個 blog 幾篇文章的內容


II. Introduction

現在就來介紹 Scott Mitchell 的幾篇文章,補充一下坎尼 blog 上沒寫過的 XD


(i) Programmatically Generating Chart Images
之前坎尼也介紹過如何匯出 Chart 圖片
Scott 這篇又更加深入的教大家如何加上浮水印
以及如何直接用 email 把 Chart 圖片發送出去


(ii)Adding Statistical Formulas
Scott 在這篇教大家怎麼加入統計公式
主要是利用 Chart 底下 DataManipulator.Statistics 裡提供的靜態方法
另外 DataManipulator 還提供 Financial Formula 的運算,有興趣的人可以看看


(iii)Enhancing Charts With Ajax
坎尼有介紹過替 Chart 加上 javascript 事件
其實把事件替換成 Ajax 方法的呼叫即可
這篇 Scott 教的剛好是坎尼沒介紹的 Ajax 互動事件
想讓使用者有更好的體驗,一定不能錯過此篇



III. Conclusion

參考連結:


2010年1月2日

[Other] Plurk API 使用心得

plurk 在前陣子推出了官方API
坎尼就來講一下小小試玩心得吧

首先是 API 網址 http://www.plurk.com/API
這邊要注意的就是 API 是大寫不是小寫 (話說小寫還真的有人註冊

接著就是的 API 說明部分  (見下圖

藍色部分為 API 呼叫的網址

綠色部分提醒使用者要先登入

紅色的部分為要傳入的 GET 參數,這邊分為 Required 及 Optional
Required 的變數一定要給予正確的值,不然就會回傳 Error Text

Optional 可隨使用者高興給值
但注意的是,Optional 參數不能給空值,否則就會回傳 Error Text
 ex. http://www.plurk.com/API/Timeline/getPlurks?api_key=123&limit=
上面這句會因為 limit 為空發生錯誤回傳

底下黃色部分則為回傳的資料格式,皆為 json 格式的字串

補一張試玩後的成果

沒想到坎尼的第一噗是這麼無聊的故事接龍啊.....

參考網址:
http://www.plurk.com/API
[C#]玩玩Plurk API(Official版)

[C#] ++ operator 探討

上一篇講的太模糊了,所以來補充一下 ++ 的用法
(此篇所講的也可套用至 --、** 等其他運算子中)

I. 題目

題目定義:以 z = 0 為起始,進行算式的 print 動作
注意!! 每個算式開始,z 都會先歸零
  1. z++ + z
  2. z + z++
  3. z + z++ + z
  4. z++ + z++
  5. z++ + z++ + z  
  6. ++z + z++
前兩題為上一篇出現過的題目 (不過 Tim 說他不懂,所以再講一次)
後面四題就是坎尼自己亂寫的,有興趣的人先不要往下看,自己算算看
為了方便理解,坎尼會用 z1、z2、z3 來代替該出現順序的 z 值

II. 解說

Q1. z++ + z
z = 0 , z1 = z++ , z2 = z
z1 = 0  (z++ 執行,但 z1 的值仍為 0)
z2 = 1  (因為前一個數為 z++,所以到這邊時 z=1,得到 z2 = z = 1)
z1 + z2 = 0 + 1 = 1 => 得到 列印值 = 1 , z = 1 

Q2. z + z++
z = 0 , z1 = z , z2 = z++
z1 = 0
z2 = 0 (z++執行,但 z2 的值仍為 0)
z1 + z2 = 0 + 0 = 0 => 得到 列印值 = 0 , z = 1

Q3. z + z++ + z
z = 0 , z1 = z , z2 = z++ , z3 = z
z1 = 0
z2 = 0 (z++執行,但 z2 的值仍為 0)
z3 = 1 (因為前一個數為 z++,所以到這邊時 z=1,得到 z3 = z = 1)
z1 + z2 + z3 = 0 + 0 + 1 = 1 => 得到 列印值 = 1 , z = 1

Q4. z++ + z++
z = 0 , z1 = z++ , z2 = z++
z1 = 0 (z++ 執行,但 z1 的值仍為 0)
z2 = 1 (z++執行,且前一個數為 z++,故 z2 的值為 1)
z1 + z2 = 0 + 1 = 1 => 得到 列印值 = 1 , z = 2

Q5. z++ + z++ + z
z = 0 , z1 = z++ , z2 = z++ , z3 = z
z1 = 0 (z++ 執行,但 z1 的值仍為 0)
z2 = 1 (z++執行,且前一個數為 z++,故 z2 的值為 1)
z3 = 2 (因為前一個數為 z++,所以到這邊時 z=2,得到 z3 = z = 2)
z1 + z2 + z3 = 0 + 1 + 2 = 3 => 得到 列印值 = 3 , z = 2

Q6. ++z + z++
z = 0 , z1 = ++z , z2 = z++
z1 =1 (++z 運算前即會執行,得到 z = 1)
z2 =1 (z++執行,但 z2 的值仍為 1)
z1 + z2 = 1 + 1 = 2 => 得到 列印值 = 2 , z =2

III. 小結

以上各題用程式的執行結果
列印出來的第2個值為計算完的 z 值 (可對照上列算式結果)

如果還有不清楚的部分歡迎留言討論 ^^

2009年12月31日

[C#] 算術運算子的先後順序

今天坎尼看到一題很詭異的題目
但老師說他不會解,只會用程式跑
所以坎尼就來試解一下 ^^

I. 題目

首先來看一下題目

請問上述四個列印值各為何?
前兩個應該不用講,有問題的應該是第三及第四個列印值
答案如下

II. 解法

糾竟~ 最後兩個值是怎麼運算的呢? 坎尼用中斷點及監看式一一道來

print 第一行之前,z = -1
但由於此處用 ++z => 先進行 z = z + 1 運算,再進行列印
得到列印值為 0,此時 z 也為 0

print 第二行之前,z 為 0
此處用 z-- => 先列印出值,再進行 z = z - 1 運算
列印值為 0,此時 z 的值為 -1

第三行,尚未進行運算之前,z 為 -1
但 z++ + z 的計算順序呢?
(可以看到 visual studio 很貼心的把計算式排過,題目上是 z+++z )
依執行先後,可以把式子看成 (z++) + z
在這邊 z++ 後面因為還有運算式,所以程式就先進行 z = z + 1 的動作 => 得到 z = 0
接著再去加後面的 z => -1 + 0 = -1
得到列印值 = -1 , z = 0

最後一行, z + z++,此時 z = 0
由於 z++ 後面沒有式子,所以先做完 0 + 0 之後直接列印,再進行 z = z + 1
得到列印值為 0,z = 1

III. 小結

這是西元 2009 年的最後一篇 blog 文,再數十分鐘就是 2010 年的到來 (in Taiwan)
Tim 在半年前跑去準備研究所考試
坎尼也因工作忙碌+怠惰使得今年文章產量比顯減少了很多 ^^" (汗

接下來新的一年,坎尼會盡量加油分享心得
向其他技術 blog 看齊 ^^

參考連結:MSDN ++ operator

2009年12月26日

[邏輯運算] 利用互斥進行兩數互換

今天坎尼去上課老師講了一題很有趣的題目
所以回到家坎尼就順手試驗了一下

I. XOR (exclusive OR)

XOR 是邏輯運算子之一,定義為:當兩數的值不同才為 true,相同則為 false
其他相關說明可以參考 維基百科:XOR

II. 程式

以往的做法會宣告一個 temp 變數來當互換的暫存
如果利用 XOR 寫法就變的非常簡單,只要三行就完成互換的動作
( ^ 為C#語法中的 XOR 運算子)
a = a ^ b;
b = a ^ b;
a = a ^ b;

程式執行結果

為什麼會這樣呢? 看了下面的數學推導公式就一目瞭然啦


主要是用到以下幾個特性:
  1. XOR 可交換
  2. 任何數 XOR 本身會得到 0
  3. 任何數 XOR 0 會得到本身
偷偷補充一個:任何數 XOR 1 會得到本身的補數

III. 小結

數學又令原本千篇一律的寫法開創了另一條路呢 ^^

參考網頁:
^ 運算子 (C# 參考)
維基百科:XOR

[Tips] 如何放大 Visual Studio 中的字型

有時候要 Demo 程式,但程式碼投影出來密密麻麻的該怎麼辦?
本篇就來解決這個煩人的問題

之前坎尼去參加研討會,胡百敬老師就說了一句「忘了先把字型調大」
沒想到祭司在 TechDays 就教了如何用巨集來調整字型大小
可參考 Joey 的 [修練營 ASP.NET]Visual Stuido Tips - 熱鍵使用巨集調整字型大小

但本篇要講的是,各位在 Visual Studio 2010 還有另一種選擇!!!!

按住 CTRL + 滾輪

是的,你沒看錯,就是和一般的瀏覽器一樣
按住 Ctrl 鍵再用滑鼠滾輪上下滾即可放大縮小字型
也沒有巨集啟動時的延遲時間等副作用

只能說,帥啊老皮!

Google Spreadsheet 裡用規則運算式

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