2017年1月6日

Winform DataGrid Binding

    下面是程式中需要的Grid 欄位長相

     1. 新增Class並繼承INotifyPropertyChanged,實作其function

[coggle] 線上心智圖

最近流行用心智圖來做思考,介紹一下coggle,是我最近試用過的,
大家可以試玩看看,他是線上的工具,網址:https://coggle.it

一開始我用了幾套,有線上的有下載的安裝的,我覺得這個用起來最直觀,滑鼠直接點就可以出現分支連線,直接拖拉就可以移動,雖然很簡單,且免費的有限制一些功能(顏色、全部自動排序、分支合併等等),但初步會用到的功能都有。


2017年1月4日

oracle重複連線(關閉又開),帳號密碼錯誤

Persist Security Info=True;

今天碰到連線關閉又打開時報錯:使用者密碼錯誤(之類的,我忘了錯誤代碼…)
原來是連線字串上面的這個屬性搞鬼,預設為false,連線一次就會把敏感資訊清掉,敏感資訊就是帳號阿密碼之類的,如果上面屬性寫成true就不會清掉。

也不一定要設這個屬性,只是每次連線就要抓取本來的連線字串,不能用OracleConnection.ConnectionString

2010年10月18日

書 - WPF

基峰 : Windows大師Charles的著作

悅知 : WPF開發團隊的人寫的著作(全彩)

博碩 : 日本微軟的人寫的WPF著作

旗標 : AW的Essential WPF(未出版)

上奇 : Wrox的WPF

全世界真的寫得好的書,也就這幾本.

建議常常看MSDN好書推薦 

http://www.microsoft.com/taiwan/msdn/books/default.htm#5

2008年7月21日

從XP救回在MBR的Grub

之前為了下載東西,所以一直沒有把Windows重灌,反而是先裝了Ubuntu。這下可好,一重灌完M$很貼心的把MBR給蓋掉了。開機再也看不到親愛的Grub選單了。總不會又要我重灌一次Ubuntu吧,那可是會瘋掉的。所以就開始上網找,以下是我成功的方法吧。

1. 首先先確定XP可以正常開機,如果連M$都有問題,可以用XP的FixMBR。

2. 下載WinGrub。

3. 照裡面的選單把Grub安裝到MBR ﹝要選磁碟機﹞,或者是BOOT.ini裡面﹝註﹞。

4. 我自己是安裝到MBR以後用UBUNTU的光碟開機進去終端機打以下指令:
﹝如果沒有先安裝到MBR,UBUNTU光碟開機重裝不起來的樣子...﹞

$: sudo -i
$: grub // 底下是Grub的畫面
grub> root (hd0,0) // 參考對應的硬碟,root跟括號之間要有一個空白。
grub> setup (hd0) // 看是安裝到哪個硬碟,注意括號前面要有空白。
grub> quit

5. 重開機。

6. 這時候可以回去Windows裡面把WinGrub裝的Grub給移除了﹝假設是裝在BOOT.ini﹞

註:如果選擇裝在BOOT.ini,則要照他的說明檔在C槽下建立一個boot目錄,裡面在建立一個grub目錄,在grub目錄裡面要寫一個 menu.lst。詳細寫法跟Linux類似,可以參見說明,這樣Windows開機的時候就會多一個選項,選那個就可以看到自己寫的選單,此時再進 Linux重新安裝Grub就好。

2008年6月10日

困擾我很久 ... vector&array效能問題

最近又有一個慘痛的教訓
就是在選用vector還是一般的指標陣列來儲存變動的資料
vector真是個好物,只要一直塞東西進去就好
不用管你現在vector陣列的大小為何
vector都會幫你管得很好
但一般的指標陣列就不是了
如果要宣告一個可變長度的陣列
還必須先知道你要宣告的陣列大小
才能做出一個符合你期望元素數量的容器出來
而vector在解構的時後也蠻方便的,呼叫一下Clear()即可
一般陣列又要delete[ ] 再NULL他

是的,剛接觸到vector的人一定會覺得那是一個寶
我剛開始也是這樣
之前決定用vector來寫變動長度的容器,就不會有index計算的問題
用vector::Size()就可以得知你丟進去元素的量有多少
在去存取元素成員,可以減少index超過的問題
一般陣列有時候index沒有設想好的話,超過陣列長度的存取
雖可能不會造成程式的中斷
但是這樣很有可能會得到錯誤的資料
但是後來實際上機測試vector的效能
用一般陣列與vector陣列
建立2000筆資料時
速度是一般陣列遠超過vector
差了大約10~15倍
隨著資料增長
5000資料就差了30~50倍以上
後來才知道vector在插入新元素的時後
其實是在另外一塊夠大的記憶體區域把自己原本的資料複製過去
再把新加入的資料塞入最後面
所以幾乎大部分的時間都在做記憶體搬移的動作
速度蠻讓人蠻失望的
所以阿,一個程式的效能
往往取決於資料結構選定、時間複雜度的減少,記憶體使用狀況節省
要讓程式速度快,那要下的基本功與前置作業真的可不能少阿!
所以,vecor 是在"不得以"的狀況下,才去使用會比較好唷!

這是網路上看到的文章,完全就是我的情形阿 ...
一開始是用到這麼好用的東西,動態陣列這麼方便,操作也超級方便,就用上癮了 ...
沒想到,程式效能跟別人做出來的差好多,一直在想是不是vector的問題,這篇文章完全證實了我的想法!!!就是這樣 .....