2010年11月19日 星期五

[閒聊]為什麼會這樣,Google Chrome 不正常

放在 blogspot.com 的東西,為什麼 google chrome 會不正常,跟別人不一樣?!

image

image

image

[c#]設定檔 config 的使用(3)

前次提到使用 System.Configuration.ConfigurationManager 這個神奇工具,
是非常方便,
但是我想要指定設定檔名字,怎麼辦?

那就來抄 App.config 吧,希望這個沒有專利啊,呵呵。

public class readConfig{
        string _configFileName = "";
        public readConfig(string configFileName)
        {
            _configFileName = configFileName;
        }
        public string ConfigValue(string section, string key)
        {
            string r = "";
            System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
            try
            {
                xd.Load(_configFileName);
                System.Xml.XmlNode xn = xd.SelectSingleNode("/configuration/" + section + "/add[@key='" + key+ "']/@value");
                if (xn == null)
                {
                    r = "";
                }
                else
                {
                    r = xn.InnerText;
                }
            }
            finally
            {
            }
            return r;
        }
    }

使用方法如下

readConfig x = new readConfig(pathToConfig);
string y = x.ConfigValue("appSettings", "source1");

就這樣。

如果 key 不存在的話,會傳回長度為零的字串。這是我自己比較喜歡的結果。

[c#]設定檔 config 的使用(2)

前一篇說到使用 dataset 當做工具來讀取設定。
另外一個是開發的時候,在專案中加入 App.config 這個檔案。

我先用 winform 專案來解釋。

要記得將 System.configuration 加入專案參考中。
如此就會有神奇工具可以用,就是

System.Configuration.ConfigurationManager

只要將 App.config 裡面內容填入

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
  <add key="source1" value="appsetting.release.config" />
  <add key="source2" value="appsetting.dev.config" />
  <add key="target" value="appsetting.config" />
</appSettings>
</configuration>

以下神奇工具的使用就會得到上面紅色的字!

string f1 = System.Configuration.ConfigurationManager.AppSettings["source1"];

也就是 /configuration/appSettings/add 元素的 key / value 在操作。
如果 key 不存在的話,會回傳 null 。

當你建置這個專案,執行檔執行的時候,並不是把 App.config 這個檔案當做設定檔來讀,而是「執行檔名稱.exe.config」。例如某個執行檔名字是「MyFirstExe.exe」,設定檔名字就是「MyFirstExe.exe.config」。

所以你的執行檔在發佈的時候,記得要帶著「執行檔名稱.exe.config」一起發佈。

還有類似的神奇工具在其他種類的專案中,下次再研究。

2010年11月14日 星期日

[c#]設定檔 config 的使用 (1)

從 vb6 時代,用慣了 ini,就算換到了點網時代,也還是用 ini。
不想換的原因也很簡單,就是懶得再去搞定那些已經寫好的設定檔讀取的舊程式碼。

其實,現在的點網好心的給我們一些功能,所以可以輕鬆使用 xml 當做設定檔。現在有兩招,第一招是同事發現的:

(1)用 dataset 當做操作者:
首先把設定檔寫好如下

<Setting>
  <SetPath>
    <Test1>C:\Test</Test1>
    <Test2>D:\Test</Test2>
    <Test3>E:\Test</Test3>
    <Test4>F:\Test</Test4>
  </SetPath>
</Setting>

取值的 function 如下,可以拿到 Test3 的值 E:\Test

DataSet ds = new DataSet();
ds.ReadXml(pathToXmlSetting);
if (ds.Tables["SetPath"].Rows.Count > 0)
  return ds.Tables["SetPath"].Rows[0]["Test3"].ToString().Trim();
else
  return "";

會這樣寫是要避開設定檔沒寫好的防呆措施。

2010年11月5日 星期五

[google]google I/O

以前只看名字,以為這是 google 對於 I/O 的一些軟體。
我大錯特錯。
原來這是 google 舉辦的 conference 的名字。
在這個 conference 裡,介紹 google 的成果,推廣他們開發工具,推廣他們的應用產品,推廣他們對於網路的理念。
我仍然很佩服他們能把商業做得這麼不露痕跡。
尤其我經歷過搜尋網站把網站排名秤斤論兩的販賣的年代,我因為它總是給我大家所認為對的資料,而不是花錢買曝光率的網站而一直用到現在。
他們維持著給與使用者想要的資料的原則,並且努力著提供好用的平台,降低門檻讓每個人都能成為內容的提供者,而不惜花大錢投資研究或買下其他公司。
是的,當然有可能這樣的公司會做壞事。希望他們能堅持下去。
離題了。
這個 conference 的影片我正在消化中,最讓我印象深刻的是 2009 送與會者手機,2010 也送與會者手機。好想參加啊,不曉得要不要錢?

2010年11月4日 星期四

[aspnet]按下按鈕後,出現下載視窗

這是常常看到的功能,但是我就是花了一、兩個小時在試它。

protected void Button1_Click(object sender, EventArgs e)
{
    Response.ContentType = "text/xml";
    Response.AppendHeader("Content-Disposition", "attachment; filename=newfile.xml");
    Response.TransmitFile(Server.MapPath(@"App_Data\" + "newfile.xml"));
    Response.End();
}

以上的程式是把網站中,存在的檔案送出去。

protected void Button1_Click(object sender, EventArgs e)
{
    Response.ContentType = "text/xml";
    Response.AppendHeader("Content-Disposition", "attachment; filename=newfile.xml");
    Response.BinaryWrite(System.Text.Encoding.UTF8.GetBytes("text test"));
    Response.End();
}

而以上的程式是把網站中,已知的字串用UTF-8編碼當做XML檔案送出去。

兩個程式裡,只要走到Response.End();就離開了。在後面寫什麼程式都執行不到。