2011年1月25日 星期二

[OpenNMS]安裝(1) Java 相關

安裝 JDK

下載 Java 6 (1.6), Java 5 (1.5) 或更高版本的 Java SE JDK,且安裝它。
必須要是 JDK 而不是 JRE。
原因是 web UI 是 JSP page,而需要動態 compile 產生。
需要的是 Java SE ( for “standard edition”), 不是 EE, ME, 或 FX。
(譯:總而言之,請認明 Java SE JDK)

安裝 JICMP

從 OpenNMS 1.3.6 之後,JICMP 就是分開包裝了。也因此要分開安裝。
JICMP 是 Java 版的 ICMP 工具。(就是 ping 啦)
OpenNMS installer 有含 32bit JICMP。在 64bit 的安裝上,需要另外下載
http://sourceforge.net/projects/opennms/files/JICMP/
在 OpenNMS 安裝精靈進行到步驟8和步驟9之間時,用下載回來的
64bit jicmp.dll 及 msvc runtime dll 蓋過 OpenNMS\lib 裡面那些 32bit dll。

[OpenNMS]安裝(0) 步驟提示

這是從官網看來的,只是我翻成中文,快速安裝用。
http://www.opennms.org/wiki/Installation:Windows

1 安裝 JDK
2 安裝 JICMP
3 安裝 PostgreSQL
  3.1 下載 Installer (要叫做安裝員嗎?呵呵)
  3.2 執行 Installer
4 資料庫初始化
  4.1 在PostgreSQL_Root\data建立新資料庫
  4.2 加入 PL/PGSQL Language
5 安裝 OpenNMS
6 執行 OpenNMS
7 版本歷史/可用性(Availability)

2011年1月14日 星期五

[sqlite]型態轉換 cast

為了省麻煩,我把所有的欄位都用文字來存。連日期也是。

例如 990101 是民國99年1月1日,1000111 是民國100年1月1日。

原本,排序還不是問題,就到了民國99年跟民國100年產生了問題。

990101是排在1000101的後面。

面對這樣的不調適,原先的做法是全抓回來,自己再排一次。

可是要抓某一範圍內的如 date < 1000101 and date > 991225 還是很麻煩。

後來發現一個方法叫做 cast

讓以下的句子可以如預期的工作。

select * from table order by cast (date as integer)

把 date 字串換成整數,比大小就準了。

2010年12月29日 星期三

[閒聊]delicious 可能會不見?

這不是一個好消息 delicious 可能會不見。

http://uniquehazards.tumblr.com/post/2377362882/we-can-save-delicious-but-probably-not-in-the-way-you

我在 delicious 上面有 1043 個書籤。是念研究所開始累積的。

除了有很多是研究學術用的連結,也有很多是寫程式研究的連結,有更多,完全是宅男要用的…

delicious 是一個管理網路書籤的網站。
除了自己管理之外,也可以看別人是如何管理書籤的。
這是屬於一個集體智慧的社群網站,或許你平常不會去注意。
你可以看到在這個網站上的集體智慧顯露在標籤上(也就是關鍵字)。

我管好自己的書籤,提供了我的智慧結果,別人也是。
從系統方或是有志之人就可以從人與標籤與網址之間的關聯看出一些東西來。

說了這麼多,真的是希望他不要被廢掉。如果真的被廢掉了,
那…也許我自己來做一個好了…。

2010年12月17日 星期五

[sqlite] index 加快了查詢速度

原本我的表格裡,只有單純的幾個欄位,沒有任何欄位有設定 key 屬性,
也都沒有設定流水號的欄位。

要檢查資料是否有重覆的時候,我就得自己準備了一個 sql 字串來檢查,
到了資料有 22 萬筆的時候,大約查一次要 0.2 秒。
insert 或 update 一次只要 0.001 ~ 0.0017,看硬碟忙不忙。
如果有 14 萬筆資料,就要花 7 個小時在檢查資料重覆性。
塞一年的股票資料就很花工夫了。

後來查到網路上說,資料庫的 index 若有建立,可以省下很多時間,
當下試試看。

語法是:

create unique index if not exist <indexname> on <tablename> ( <keycolumn>, )

做完之後,馬上查詢的時間一次只要 0.001 秒,甚至有時少於 1 毫秒。

真省時間!

玩 database 還真麻煩。
這種事感覺是很基本資料庫優化的工作,應該要預設開啟的?
或是因為我沒有設 key column 引擎也不知道要怎麼幫吧。

這次以後就要對於 table schema 及 index 特別注意了。

ref:
http://www.sqlite.org/lang_createindex.html

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 不存在的話,會傳回長度為零的字串。這是我自己比較喜歡的結果。