2017年1月6日

[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的問題,這篇文章完全證實了我的想法!!!就是這樣 .....

2008年5月5日

以程式哲學改善工作效率

根據Eric Steven Raymond的自由閱讀著作「The Art of Unix Programming」,作者Gina Trapani根據「Unix哲學的基礎」這一章,歸納出了幾個無論對於寫程式、或是改善個人生活與工作效率都很有用的原則;這裡摘錄標題並簡介如下:

1. 將資訊切割成單純的片段,再用乾淨的介面將它們連結起來(模組原則)



例如用不同的工具(軟體、網站‥‥)來構成管理個人資訊和時間的系統;功能和資訊過度集中、過度複雜的做法,可能不利於個別部份的升級和更新。

2. 以資訊的呈現方式而言,清楚比小聰明重要(清楚原則)



記錄資訊的時候儘可能清楚易懂;例如備忘事項寫「問老王怎麼開公司,電話1234-5678」就比「來開公司吧」有用。同樣的,用這種精神來寫程式,也會讓下一個處理的人輕鬆得多,尤其那個人可能是幾年後的自己。

3. 將資料跟使用方法寫在一起,讓運用過程簡單又防呆(形式原則)



一開始就把完成工作所需的所有資訊準備好。例如在記錄「打電話給老王」提醒事項時,順手就把電話號碼寫上去;去一個新地方之前,把完整的地址電話等資料寫在隨身筆記上。

4. 如果事情非死不可,就讓它死得流芳百世(修正原則)



通常我們會儘可能隱瞞失敗,但這樣可能只會讓失敗再度發生。詳細檢討自己的失敗內容、找出失敗原因,然後找出解決方法。生活中的很多事情跟軟體開發一樣,都是不斷循環的流程,壞的地方沒有修好,下次還是會碰到。

5. 人的時間比電腦的時間更珍貴(經濟原則)



能讓電腦做的事情,就不要自己做。善用快捷鍵、將備份資料之類常做的工作自動化,縮短自己做這些事情的時間。讓電腦幫你做事,而不是你幫電腦做事。

6. 先把雛形做好再修整、系統能動了再減肥(優化原則)



無論做什麼事情,有用的方法或工具就是最好的;一旦找到好的工具,就先開始用,然後再慢慢調整使用方式,會跑比看起來漂亮更重要。

7. 時時考慮未來,因為它降臨的速度比你想像的快(擴充原則)



很少有工具可以用一輩子;所以無論資料或工作方式,都不要被現在的工具給鎖死,要讓它們隨著你一起成長。

*****
會想摘錄這幾條看似簡單的原則,是因為雖然簡單、卻打中了許多我們因而常常忘記的事情。

至少我自己是如此:常常記下要打電話給某人,卻沒有順手把電話抄下來,於是第二天還得花一次時間去查;也有很多設計師因為執著於某一小部份作品的完美,而曠日費時於修理幾乎無關緊要的小地方,卻忽略了整體的平衡整合、或是延誤了完成的時間。

寫程式也好、安排自己的工作或時間也好,很多提升效率的道理是共通的,端看我們是否忽略忘記、或者因為自己的執念而明知故犯,如此而已。