google code-beautifer

星期四, 10月 25, 2007

gnome 桌面上的"位置"如何設定

gnome 桌面上的"位置"如何設定

1.0 版 十月 25, 2007
2.0 版 Mar 17, 2008

Mandriva 最早是追隨 debian 的menu架構,後來逐漸轉移到XDG Menu System標準。2008有個工具在處理這些。不過我還沒找到在Mandriva 2007.1 上是如何處理這些。當時每次開gnome-terminal 都跑到~/Desktop 下。有點煩。反正現在升級了就不用管了。

Mandriva 2007.x


~/.mdk-folders
下面有幾個聯結
documents
download
music
pictures
video
就是相對應
"文件"
"下載"
"音樂"
"圖片"
"影像"
的位置

還有相對應的翻譯檔
documents-mdk.desktop
download-mdk.desktop
music-mdk.desktop
pictures-mdk.desktop
video-mdk.desktop

比如說我不喜歡桌面上的"下載"位置是指到 ~/Download/
想搬到 ~/Documents/Download/

我就執行
代碼:
rm ~/.mdk-folders/download
ln -s ~/Documents/Download ~/.mdk-folders/download

然後用utf8的編輯器如gedit 修改 ~/.mdk-folders/download-mdk.desktop裡的
代碼:
URL=file:///root/Download

改成
代碼:
URL=file:///root/Documents/Download

然後重新登入
(註: 用2007.1 當時,只登出/登入 gnome 我的雙螢幕左半桌面會怪怪的 系統重新啟動後就沒事)

Mandriva 2008


MDV2008 現在不用 ~/.mdk-folders了,新版遵從XDG 的式樣。如使用者名稱是加菲貓,那在
/home/加菲貓/.config
下面有 user-dirs
跟
user-dirs locale
為保險起見,我用能判別編碼的編輯器來編輯
user-dirs locale 指定了locale 是
zh_TW
在~/.config/下的user-dirs.dirs檔裡面有幾個聯結,指定了桌面預設檔案夾名稱
XDG_DESKTOP_DIR="$HOME/桌面"
XDG_DOWNLOAD_DIR="$HOME/下載"
XDG_DOCUMENTS_DIR="$HOME/文件"
XDG_MUSIC_DIR="$HOME/音樂"
XDG_PICTURES_DIR="$HOME/圖片"
XDG_VIDEOS_DIR="$HOME/影片"

就是桌面位址相對應的
"桌面"
"文件"
"下載"
"音樂"
"圖片"
"影片"

我相信對應的英文檔名是
Desktop
Doucments
Download
Music
Pictures
Video
不過不太確定了

假如是在 utf-8 編碼, 對應
文件
下載
音樂
圖片
影片
這些位址檔名的逸出字元表示是
file:///home/加菲貓/%E6%96%87%E4%BB%B6
file:///home/加菲貓/%E4%B8%8B%E8%BC%89
file:///home/加菲貓/%E9%9F%B3%E6%A8%82
file:///home/加菲貓/%E5%9C%96%E7%89%87
file:///home/加菲貓/%E5%BD%B1%E7%89%87

假如是在 big5 編碼, 對應檔名的逸出字元表示是
file:///home/加菲貓/%A4%E5%A5%F3
file:///home/加菲貓/%A4U%B8%FC
file:///home/加菲貓/%AD%B5%BC%D6
file:///home/加菲貓/%B9%CF%A4%F9
file:///home/加菲貓/%BCv%A4%F9

(這使用者名稱加菲貓要換成對應的英文)

怎樣查utf8 中文的逸出字元


看到一堆逸出字元怎麼查誰是誰?後來發現一個方便的方式:用python

我在gnome-terminal 下用zh_TW.UTF-8的locale執行python,直接把字串輸入,就會傳回字串utf8編碼

$ python
Python 2.5.1 (r251:54863, Jan 14 2008, 13:07:32)
[GCC 4.2.2 20070909 (prerelease) (4.2.2-0.RC.1mdv2008.0)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> '桌面'
'\xe6\xa1\x8c\xe9\x9d\xa2'
>>> '下載'
'\xe4\xb8\x8b\xe8\xbc\x89'
>>> '文件'
'\xe6\x96\x87\xe4\xbb\xb6'
>>> '音樂'
'\xe9\x9f\xb3\xe6\xa8\x82'
>>> '圖片'
'\xe5\x9c\x96\xe7\x89\x87'
>>> '影片'
'\xe5\xbd\xb1\xe7\x89\x87'

假如是 big5 編碼,改用zh_TW 的locale執行 python

在Nautilus/gnome 下加入更多的捷徑


當然常用的位置不只這些,系統已在~/.gtk-bookmarks下預設了幾個,如2007時的
代碼:
file:///home/加菲貓/.mdk-folders/video-mdk.desktop

我們也可以自己加,如
代碼:
file:///home/data

在gnome 的檔案管理系統會用最底層的目錄名作為名稱顯示萬一不同目錄最底層的目錄卻同名的話,還可以用別名,如
代碼:
file:///mnt/win_e/data wine_e_data

不過一但加入更多的位置捷徑,文件/下載/音樂/圖片/影片這幾個就會從位置的頂層,移到叫"書籤"的下一層位置裡

延伸閱讀


用 convmv 來轉檔名編碼

關於轉移到XDG Menu System,這一篇有一些參考價值
http://wiki.mandriva.com/en/Development/Howto/MenuMigrationToXDG

附錄:


(註: 下面這篇本來名為"mandriva 2006 調校 "發表在CLE
http://cle.linux.org.tw/forum/viewtopic.php?p=2916&sid=b8971dc6c482b78f9ebdc05efdfa0069
不過那邊有人見不得人好,自己一點牛肉都端不出來,卻愛批評別人的燒餅會掉芝麻。還會不時偷看我的文章然後在網路上亂罵人,所以我就懶的過去修改了。時間久了就會自然證明孰是孰非。這只是作檔案存檔,不過gtk 跟更新的部分還是有效的)

有圖有真相

Google 正體中文搜尋 "Mandriva xdg" 這篇文章當時排行第一,現在還是前幾名(不過其他的不是我寫的,就是其他不相干的資訊)。其實我當時就有存檔,只不過跟大眾證明事實,並不比事實本身重要,所以沒有第一時間就拿出來,而是到改版把文章改的更好時才拿出來。那些只會亂批評別人的人,除了會第一時間跳出來罵人,口水一地外,長期看下來,什麼實質東西都沒有。努力工作時間寶貴,我不會隨這種人的污衊起舞,因為事實勝於雄辯。

想瞭解這些人的惡形惡狀,請參考垃圾堆1

星期日, 10月 21, 2007

用Emacs 開發C 程式

Version 1.1

(Oct 21: 1.0版)
(Nov.12 1.1版: xcscope 的深入討論獨立出來自成一節)

最近被學校猛操 C 程式開發,我覺得開發C 除錯的時間要比lisp長很多,非得找方便的開發除錯環境來幫忙不可。理論上我可以用eclispe或anjuta 這種大傢伙來開發,但我一邊開發除錯還要一邊作別的事,那些不是很方便。最好的選擇還是找能跟emacs 搭配的工具。

目前在emacs上裝了
ecb
xcscope
xrefactory (xref-1.6.10)
覺得工作起來順手多了。這三個各司其職:
ecb 比較接近快速的瀏覽 source code 整體本身
靜態的呼叫範圍相關問題用xcscope查
跟編譯比較接近的相關問題用xref
三者都跟emacs 的source buffer 緊密結合

除了這三者外,還有一些其他的工具,其中cbrowser好像很久沒更新。SimpleCallTree 我弄不出來,作者勸我用比較正式的工具代替。

Code Crusader 5.2.1 是商業程式。demo有兩種,一種是限制使用時間,另一種是限制最多開啟5 個檔案跟5 個視窗但還要註冊。我不是很喜歡。

Doxymacs等於是Doxygen + {X}Emacs。我根本沒時間好好弄文件,就先擱著。

還有一些不熟的地方,等日後弄通了再整理出來。參見CategoryProgrammerUtils

ecb


結合gdb, outline-mode...這些說起來話長,先放一張圖片供參考。下面會再提到。可以看到在History 視窗裡某些檔案icon 從綠點變成橘點,表示下面這些檔更動過
hmm.cpp
Point.h
其他沒有綠點/橘點的檔案(如chineseNL.txtP),是其他正在編輯但不相干這個工作目錄的。但在目錄視窗裡可以看到Makefile 被動過,所以在這會從綠點變成橘點,但不是emacs 弄的,所以不出現在History 視窗。


xcscope


跟著cscope 有個 xcscope ,提供cscope 支援,可以讓搜尋變數的過程更簡便。附圖可以看到xcscope 把搜尋viterbi 這個符號的兩個結果同時在%cscope%裡顯示

關於xcsope 的深入討論獨立出來,參見第三部分:xcscope整合。

XreFactory


XreFactory(下面簡稱xref)是 www.xref-tech.com 的產品。其中 c/java 是免費使用。現在是1.6.10版。
C/C++ 版現在是2.0.13版,只有八天合法試用期,過了就該買license。
參見http://www.emacswiki.org/cgi-bin/emacs-en/XreFactory

xrefactory 可以列出沒有用到的變數。當編譯時出現問題時,假如選擇查看 log 檔,*xref-log* 視窗會列出有問題的行。如同 cscope,這時用鼠標移到其中想要跳過去查看的那一行,按滑鼠中鍵或左鍵,主程式視窗列表就會跳到對應的那一行。

XreFactory會在~/下產生 .xrefrc

每次建立一個新project 時會產生一個以
[子目錄]
開頭的區塊,裡面可以設定 編譯的選項。我自己是把 make debug 放進去,在
Makefile 註明 gcc -g 好產生符號表供dgb使用。

三者整合使用


這兩者分別控制獨立相對應的主程式列表視窗。

假如螢幕夠大,建議開兩個frame ,其中一個執行 ecb ,一個不要執行 ecb。因為 xref切frame成左右兩個視窗,建議在沒有執行 ecb的frame執行xref 動作。在有執行 ecb的frame 下切到*cscope* 的 buffer執行cscope 動作

寫好直接在 emacs主選單下選 compile。
編完直接在 emacs主選單下選 tool -> debugger(GDB)

以我手上這個程式為例,跑到最後出現
Program received signal SIGSEGV, Segmentation fault.
0x00002b4736238eab in fclose () from /lib64/libc.so.6
(gdb) where
#0 0x00002b4736238eab in fclose () from /lib64/libc.so.6
#1 0x00000000004016d6 in main (argc=1, argv=0x7fff74d3e1a8) at test.c:488
(gdb)
所以就知道程式死在第488行附近

星期六, 10月 20, 2007

GCC 最佳翻譯徵求懸賞

在我的"現代中央處理器的C 整數長度"blog 文刊出後,蒙 jserv 立即回應參考 "理解 64-bit Programming Model 一文後,才發現了zonble 之前竟然blog了 本日金句:LongLong Long is Too Long」這篇妙文。我決定來個最佳翻譯徵求懸賞,共襄盛舉:

請中文翻譯 mjhsieh 當初碰到這一段gcc 編譯錯誤:
"test.c:22: error: `long long long' is too long for GCC"

原則上要詩/技(geek)意雙全為佳。

我會找幾位自由軟體社群中對文藝有涉獵的朋友作評判,有可能的話還會請一位
詩畫俱佳的藝術家前輩作評判。比賽截止日期暫定 2008 詩人節,我記得我手頭
上還有一本全新鹿橋寫的"人子"躺在某處箱子裡。要是找不到的話,至少會有一本 Linux的書作為獎品。

願意加碼提供獎品,或有其他促進更大參與層面主意的朋友,也請不吝賜教。



我先拋磚引玉:

測試點兮二二行, 編譯錯誤兮信息:
"長兮長兮長整兮、過長兮於姬兮兮"

(註: 行也可讀成 "行"走的音)

星期五, 10月 19, 2007

現代中央處理器的C 整數長度

最近要寫一些C程式處理大筆資料,有點擔心會整數溢位。
寫了個C程式試了下,發現很有意思的事

在AMD CPU 32bit Athlon gcc 4.1.2 傳回
bytes: char:1, int:4, long:4, unsign:4, unsign long:4, long long: 8

AMD 64bit Athlon gcc 4.1.2 傳回
bytes: char:1, int:4, long:8, unsign:4, unsign long:8, long long: 8

Sun Ultra sprac III (64 bit CPU) gcc 3.4.4 傳回
bytes: char:1, int:4, long:4, unsign:4, unsign long:4, long long: 8

看起來Sun 這版gcc 還停在 32 bit

其實一般應用 32 bit signed 整數(-2,147,483,648 到 2,147,483,647)已經蠻夠了。要省空間就用 short int 或 char


short int (2)
-32,768 to 32,767
(K& R 說是 -32,767)

unsigned int (4)
0 to 4,294,967,295

int (4)
-2,147,483,648 to 2,147,483,647
(K& R 說是 -2,147,483,647)

char (1)
256 character values

float (4)
1.2e-38 to 3.4e38

double (8)
2.2e-308 to 1.8e308

星期日, 7月 01, 2007

歷史文件: (翻譯)標準與社群的未來

以下是我2003 在軟體自由協會的論壇上發表的舊文,由於該協會經營不善,造成重要歷史資料遺失。只好在個人部落格重建部分內容,作為臺灣自由軟體發展歷史的見證。

---------- Forwarded message ----------
Date: Fri, 6 Jun 2003 06:33:28 -0500 (CDT)
From: 我的舊信箱
To: slat-talk@softwareliberty.org
Subject: (翻譯)標準與社群的未來

看到 幽靈 在 LinuxFab 談到Oopenoffice.org 1.3beta English version
Taiwan 被改成 China(Taiwan)而China 沒變成China(Mainland)
忍不住要回一下
http://www.linuxfab.com/indexForumData.php?FID=69 *註1

想要和大家討論一下該怎麼走

每次碰到這種事 有人就會反應 台灣沒參與開發自由軟體 所以使不上力
這也許是事實 但我們要如何做 以後才使得上力 是我更關心的問題

這不是嘴巴叫叫 熱心的hackers 就自動會冒出來
在阿貓阿狗也能變成熱心的hackers前 有好一段路 需要熱心的大家來打底

我想到現有的一件事是 建立標準草稿目錄 各式各樣的標準目錄

為何要標準: 可以交換回收用於其他類似的地方
如kde 的中文化選單 .po file? 可以給 gnome參考用
假如其他團體需要寄排版格式文書 Slat推薦哪幾種 pdf?, sxw?

為何要目錄: 事情太多了 必須分工 目錄是合作的依據: (權威管理's idea in library science)
如CCCII <-> unicode 3.1 mapping table list
.po 中文化項目也有上萬個 誰在進行linux哪部分文件翻譯?
沒有目錄 要合作在短期完成 如同靠天吃飯
為何要草稿: 事情不可能一次作到好 有個草稿可以逐次修正 (Prototype's idea in Software Engnering

我在藝術家與科學家間遊蕩 發現社群還有好大一段路要走 (不管台灣美國都一樣) 事情很多 其實閒置人力也不太少 麻煩是如何糾集大家(而且背景都不同)

hackers 通常只是會寫程式 不表示他們也擅長作其他苦工 其他人就該盡量和hackers 溝通需要幫忙的地方 讓hackers 就不用分太多精神在其他地方 但hackers 也最好花多點耐性解釋 技術上需要一般人幫忙的地方

UH linux 使用者協會 和Slat一樣 在網路上談純技術的時間遠少於談其他的時間 但我想在初期是正常的 因為有太多的事是有關於從技術上出發改造社會

我自己也在參與社群工作 目前在帶領 中國文學電子圖書館計畫(cell.cs.uh.edu) 有很多事也是在惶恐中作中學 網站該怎麼管? 設立論壇該用什麼軟體?
如何建立機制呈現管理標準草稿目錄讓義工分工?有太多的未知 (休士頓大學 linux 使用者協會BSD+php nuke春天被hack, slat 論壇之前被spam,... )
每一弱勢團體除各自專業的問題外 都有電腦技術上的疑慮 我衷心希望有一天 Slat 不但可以走出自己的一條路 也能有個網頁告訴其他團體在電腦技術上該怎麼作 網際網路的時代 弱勢團體在爭取特定的自由平等前 有賴軟體自由來構建凝聚族群

除了AI programming外 我也不太會寫程式 技術層面上的考量 還請開發程式的前輩指教

在公布標準草稿目錄後 就可以推動政策執行 一是法案面上 一是提供工具來促進 比如說邀集媒體定期來監督政府對的軟體自由努力 甚至白皮書支持願意替軟體自由背書的候選人
之前洪朝貴教授提的資訊分享障礙網站主意很好(只是名稱有再討論的必要)
有很多人必定樂於回報 ( 老問題 技術上如何作個bugzilla回報機制讓大眾參與?)
可以從政府機關網站開始監督 (記得順便向媒體公布該首長的大名)
在學校裡要是要求博碩士論文提供開放軟體的Style sheet,如 Tex 或 Openoffice.org
有一些人應該會投奔自由吧 慢慢就會像滾雪球般

有些人也許有疑慮Salt 與政治的參與 我想軟體自由不可能自外於政治經濟
重點在 為軟體自由參與政治經濟 而非為政治經濟參與軟體自由 許多人在 COSA
的OSS與Microsoft的立場表明的很清楚 不用我多說

大家辛苦了 一點拙見希望能拋磚引玉


-----------------------------------------------------
*註1

我在美國待了一陣子可以瞭解(但不諒解)為何會有這種錯
我建議大家(Slat)寫一個網頁供外國開發者參考比較有權威

如以地理國家分
Taiwan (big5,euc-tw,CCCII...)
China (gb2312,...)
Hongkong (big5-hkcs,...)
以主權國家分
ROC (big5,...)
PRC (GB,...)
PRC (Hongkong) (,..)
以地域分
China (Mainland) (big5,..)
China (Taiwan) (GB,..)
China (Hongkong) (,...)

細節可以再討論(獨派人士可能對第三項有意見)
但我的基本原則是兩岸的命名要對等 不能單向包括