2007/10/30

[Programming] GCC: Stack Smashing Detected!

一整個疑惑中,今天在抓我寫的 osd 的程式的 bug 的時候,發現執行時會回應:
*** stack smashing detected ***: ./gtkosd terminated
已經終止

這種訊息出來。

去查這個訊息的原因,在 starryalley 的 blog 底下看到可以加上 -fno-stack-protector 就可以看到出問題的行數。

然而... 我一加上去,我的程式就很正常的運作了。

="=?a) 這是怎麼回事?

2007/10/29

[Programming] 記憶體配置檢查工具

之前有看過 Fred 的 blog ,有看到一篇寫(malloc)檢查的工具,剛剛遇到問題才想到要去找,找了半天沒找到。(殘念)註1

不過 wilson 這時給我一個dmalloc 的介紹,好像還蠻有用的。 嘿嘿。

後來 google 了半天才找到這段 bbs 上的文章:
daddy (daddy) said:
嗯...何不先試試MALLOC_CHECK_和MALLOC_TRACE?

在執行程式前, 先export MALLOC_CHECK=1, 就會啟動glibc memory management的debug
機制,任何會segmentation fault的地方都會被glibc擋下來, 並秀出error的部分。
MALLOC_TRACE則是用來追memory leak的,會把heap usage log到指定的file。
這二個玩意兒的詳細用法請參閱GNU C library manual。
當然啦, 前提是你們用的是glibc不是uclibc :p



原文手冊在這裡。
簡中也有相關的說明:

設置環境變量MALLOC_CHECK_。
若將MALLOC_CHECK_設置為0,則在檢查到錯誤時不作任何提示;
若將MALLOC_CHECK_設置為1,則在檢查到錯誤時打印一條信息到標準錯誤輸出(stderr);
若將MALLOC_CHECK_設置為0,則在檢查到錯誤時直接調用abort()中止程序;

--
註1: 這個時候才會覺得黑米其實蠻好用的。因為我的書籤都亂放。(foxmarks+google+黑米)不過這不是重點啦

2007/10/23

[Linux] 字型不要裝太多....

說實話,我是一個很貪心的人。先前在做 UNLiu 字碼對應表的時候,裝了蠻多有的沒有的字型,像什麼 lao (老撾文) Thai (泰文) 全都裝了上來。這樣在做對應表的時候才不致於看不出來字碼的長像。

然而 這些如果是在 xxxx.ttf 檔,用 /usr/local/share/fonts/ 之類的資料夾裝在一塊兒,然後下一個 fc-cache f 就算了。偏偏又不是這麼簡單就可以的。

apt 底下的 ttf 包裝在 post inst 之後會做 fc-cache regenerate 的動作,所以在網路昇級一堆 ttf 的包裝的時候,你就會看得到一些「奇景」:

正在設定 ttf-oriya-fonts (1:0.5.0-0ubuntu1) ...
正在安裝新版本的設定檔案 /etc/defoma/hints/ttf-oriya-fonts.hints ...
No CIDSupplement specified for Dotum-Regular, defaulting to 0.
No CIDSupplement specified for Batang-Regular, defaulting to 0.
No CIDSupplement specified for KochiMincho-Regular, defaulting to 0.
No CIDSupplement specified for KochiGothic-Regular, defaulting to 0.
No CIDSupplement specified for KochiGothic-Regular-JaH, defaulting to 0.
No CIDSupplement specified for Headline-Regular, defaulting to 0.
No CIDSupplement specified for Gulim-Regular, defaulting to 0.
No CIDSupplement specified for KochiMincho-Regular-JaH, defaulting to 0.
Regenerating fonts cache... done.

正在設定 ttf-punjabi-fonts (1:0.5.0-0ubuntu1) ...
正在安裝新版本的設定檔案 /etc/defoma/hints/ttf-punjabi-fonts.hints ...
Regenerating fonts cache... done.

正在設定 ttf-tamil-fonts (1:0.5.0-0ubuntu1) ...
正在安裝新版本的設定檔案 /etc/defoma/hints/ttf-tamil-fonts.hints ...
Regenerating fonts cache... done.


有幾個 ttf 包,就做幾次 fc-cache -f

問題是這個 fc-cache 的更新動作,每次至少要花上一兩分鐘才罷休...
而且愈多 ttf , re-generate 的動作就愈久。

林老師勒... 不能一次解完所有的 ttf 檔案,再來重做 fc 的 cache 一次就好了嘛?

更.... 我裝了 20 個... (是要等到什麼時候啊?)

2007/10/22

[Linux] ubuntu 7.10 正式推出

Linux toy 有報導過了 Ubuntu 7.10 正式推出的新聞。 也寫得蠻清楚的相關的細目,包括官綱上面有提到的更新的方式。

不過我還是蠻愛翻譯一下的,畢竟還是中文比較順眼:
(註: 以下圖片直接從官網連過來)
1. Ubuntu Dekstop 的更新方式:


  1. 點擊 update manager

  2. 按下 check 做更新 package.list 的動作

  3. 如果有更新沒做,請按下 install update (安裝更新) 把一些還沒有更新的套件先更新完

  4. 如果有新的 distro 更新可以做,會像這樣提示訊息出來:


  5. 剩下的,根據營幕上的指示做完更新就可以


2.Ubuntu Server 版本更新方式(其實所有的版本應該都可以按這個方式做更新就可以):

  1. 先做 sudo apt-get install update-manager-core
  2. (更新 update-manager-core 這個套件
  3. 接著做 sudo do-release-upgrade



3. 從 CD/DVD 上面做更新

  1. 下 alternative cD 的 iso 下來,把它燒成光碟 (慢速燒比較保險)

  2. 先把光碟放進去

  3. 在BIOS 選 Boot From CDROM /開機後選 " upgrade from CDROM " 的選項

  4. 根據營幕上的指示操作

  5. 進來後,可以下到 console 的部份執行:

    • gksu "sh /cdrom/cdromupgrade"

      或在 Alt+F2 下 kdesu "sh /cdrom/cdromupgrade"



不過更新完之後,我的像 oxim/fvwm-crystal 之類的很多改過的東西都不能用了...
記得先備份一下。

[軟體] Better Gmail

六月介紹過 Better Gmail 這個軟體,原本的特點就不錯了。

現在附上一個新的功能,讓你可以在不用點進去的情況下,就直接看到信件內文:


作法是在 INBOX 的信件標題上面按右鍵就可以。

應該還有些功能沒完成,譬如繁中的翻譯就很差.... SentMail 還沒 okay 之類的。

不過還可以接受就是,在這裡下載安裝,它是 Firefox 的 extension 。

2007/10/21

[軟體] windows 字型美化軟體

在 DK 那邊看到的。簡單的說,就是會讓你的字體有真的清楚的感覺。 (像在 Linux/MacOS 上面的 anti-alias 的感覺。)

然後,可以使用王漢宗的粗黑體繁 字體來代替新細明體 (不過有漏字)
有正版 微軟正黑體 授權的也可以用這個來代替。

GDI ++ 下載點在這裡
正黑體別找我要,王老師的字體到沒什麼問題。

更新:
Vista 上的 GDI

2007/10/12

[軟體][Linux] BT Download Client

ctorrent是很好用的 Linux 上的 BT Download 客戶端軟體。不過它有一些軟體上的問題沒解決,這邊是另外一個開源軟體的義士寫出來的 ctorrent-dnh 軟體。 看起來應該比 ctorrent 好用很多。

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...