2008/12/29

[軟體] Tomboy

Tomboy 是一個很好用的筆記簿軟體,簡單的說,如果你用過 Wiki 大概用 Tomboy 就沒什麼困難。不過,如果你有好幾台電腦,在電腦之間傳送筆記似乎就沒有那麼方便了。 然而 Tomboy 的開發人員還是為了這個需求設計了:「同步化筆記」的功能,簡單的說,你只要設定好一台擁有 ssh 權限的電腦就可以很簡單的同步你的筆記了。

(這邊註記, port number 寫在 hostname 之後就可以了。)

有圖為證:


設定完,在筆記簿的工具列可以找到同步化的項目,點下去就會開始同步。

2008/12/28

[閱讀] 安娜.卡列尼娜

這本書是俄國文豪托爾斯泰的大作,當然在大學的時候就有唸過了,不過今天去貓哥的蘇格貓底的時候又拿出來翻,發現自己已經把故事情節忘得一乾二淨了,所以又花了一兩個小時把整篇故事再看了一遍;順便作了一個心智圖來說明整個故事:



----
附註:
* XMind 現在可以在 Ubuntu 上面直接安裝了。
* Jedi 的心智圖軟體戰國時代一文可以大概知道「心智圖軟體」是在說什麼。

2008/12/25

[Linux] Telnet 自動登入, expect 範例, tftpput 範例

現在 console 的登入都已經用 ssh/sftp ,所以 telnet/ftp 其實蠻少人在用的。不過,我們在嵌入式 Linux 底下還是蠻常會用到 telnet/ftp 的情況,自然要用一點小技巧來讓自已的開發速度快一點,其中一個方法,就是再來利用 expect 這個 shell script 上的工具。

範例:#!/usr/bin/expect
spawn telnet 192.168.1.1
expect Login:
send root\r
expect Password:
send password\r
interact


這個工具同樣可以用到 tftp 上面,所以要寫一個簡單的 tftpput 就是長這樣:
#!/usr/bin/expect
spawn tftp 192.168.1.1
expect tftp>
send bin\r
expect tftp>
send "put $argv\r"
expect tftp>
send quit\r
interact

這樣就可以使用 tftpput FILENAME 來上傳檔案到 tftp server 上面。

其實蠻簡單的,也只少掉一些等待的時間(3~5) s,所以沒什麼重要的,後來還有很多可以再來發揮。

2008/12/17

[軟體][Linux] Google 釋出 Picasa 3.0 beta for linux

這邊可以下載官方的 picasa 3.0 beta for Linux 。

雖然跟 win32 一起釋出,不過還是有幾個地方不滿意:

1. 還是用 wine 跑的。 (不過 XIM 中文輸入法沒問題了)
2. beta version

所以... 嗯... 我的謎圖還是被輕易的找出來了。
看來我要去調一下設定了。

[軟體] Xmind 釋出 3.0.1

Xmind 是一款很好用的 MindMap 軟體,支援多平台,像 Windows, Mac , Linux 上面都可以使用,程式平台是 java 。

今天由 Xmind 送出的通知:

新的功能:
1. 增加了新的 MindMap 結構: 順時鐘方向逆時鐘方向的功能
2. 可以匯入/匯出 Xmind 2008 的檔案
3. 可以設定儲存 mindmap 的檔案路徑
5. 可以在 topic 裡面使用超連結了
6. 個人的註記圖示可以在別台電腦上面看得到了
7. 多國語言的支援 German, Janpanese,
Chinese(Simplifiled), Chinese(Traditional)
8. 新的關係連結: Zigzag 。
9. 新的註記圖示。

對我來說,那個多國語言的支持是很重要的。僅管我可以接受英文介面,不代表跟我一起 brainstorming 的同學可以接受英文介面啊~ 所以還是要有多國語言的支援才行。
(虧我之前一直看說,不是加上 -NL zh_TW 就可以上新的語言了嗎? 它的官網 FAQ 是這麼寫的沒錯~ 還跑去 K source code 說。)

另外在 feature 沒寫的,還有一樣是,現在加入了 ubuntu 的 deb 安裝支援,所以 ubuntu user 可以直接使用 deb 包裝安裝這個軟體了,不需要再用 unzip , ln -s 再哪邊拉來拉去,麻煩死了。

--

原文如下:
Release Notes
Change of version 3.0.1

New Features:
1. New Mind Map Structure: Clockwise and Anti Clockwise
2. Import XMind 2008 file.
3. Export to XMind 2008 file.
4. Map Shot: User can set a path to save.
5. Hyperlink: Users can add Local File/Folder link, and topic link(in
the same workbook) to a topic.
6. The personal markers in a map can be seen after opening the map in
another computer.
7. Multi-lingual: New languages package including German, Janpanese,
Chinese(Simplifiled), Chinese(Traditional)
8. New relationship style: Zigzag.
9. New markers.

Bugs:
1. XMind can not run on PowerPC-based Mac OS X Tiger 10.4.
2. Print dialog will be freeze sometimes.
3. Marker, legend will become ugly if printing the map.
4. Extract a Theme, and apply to a map. This theme will be lost after
reopening XMind and that file.
5. If users enable the Auto Save in XMind, open a new workbook and
edit it, then leave XMind and do other work. After a while, there will
be many "Save as" dialog.
6. Open the build-in browser, and open a website, now if there is no
response after clicking a URL inside this website, closing this
browser view will close XMind.
7. SpellCheck is in.
8. If users use XMind 3 to open an XMind 2008 file which has
wallpaper, that wallpaper can not be read.
Some other bugs fixed.

Improvement:
1. Can not open all XMind 2008 files directly.
2. Theme will be seen after uploading and exporting to images.
3. Users can drag an image into XMind as an individual topic.
4. Ctrl+Home will let users focus on Central topic and central topic
be at center.
5. Users can change the Row order in Spreadsheet easily.
6. Importing Mind Manager file performs better.
7. Hightlight the theme in current map in the theme view.
8. If a topic is near the left or right of editor, and now double
clicking or F2 to edit it, the map will jump to let this topic be
center of editor.
9. The Fishbone Chart has tapered line.
10. There is a print icon on toolbar.
11. New .deb package for Debian/Ubuntu Linux.
12. Open .xmind file directly from Share.xmind.net.
Some other improvements.

2008/12/16

[軟體] Unicode 字體看不到

參考 這邊 其實寫的蠻清楚的。
Windows

1. 下載並存取hannomH.zip此一文檔。
2. 打開hannomH.zip並把字體Han Nom A.ttf及Han Nom B.ttf存到電腦的某一個資料夾。
3. 按一下 [開始],再按一下 [執行]。
4. 輸入 %windir%\fonts,然後按一下 [確定]。
5. 按一下 [檔案] 功能表上的 [安裝新字型]。
6. 按兩下包含字體的資料夾。
7. 選取Han Nom A 及 Han Nom B兩個字體。
8. 按一下以選取 [將字型複製到字型資料夾] 核取方塊。
9. 按一下 [確定]。


linuxer 就很簡單啦,個人使用就下載字體到 $HOME/.fonts 底下再 fc-cache -vf 就可以了。

hannomH 字體下載點

其實 Unifonts.exe 也可以,在 Linux 上面跑是沒問題的,不過在 Windows 上面會修改 register 的部份,所以使用要小心。

Unifonts 載點

2008/12/15

[軟體] Xmind in Ubuntu

更新: Xmind 釋出 3.0.1 這邊可以直接使用 deb 安裝 Xmind 。

----
今天裝 Xmind 上來的時候,看到有錯誤訊息跑出來:
gnu.xml.dom.DomDomeException 看起來是 xml 在 namespace 載入的時候就沒有過了,所以應該是系統設定的關係。

回想不起來裝了哪個東西讓它不能動,只好一個一個東西從 dpkg.log 裡面找,結果看到早上還有裝 java-gcj-compat ecj-gcj (因為 eclipse 的相依的關係),只好連 eclipse 一起幹掉。結果又恢復正常了。

結論是:用 java 的 ap 要小心相依的問題。

----
參考連結:
Tsung 的在 Ubuntu 上面安裝 XMind

2008/12/12

[Linux] libbb/procps.c:15:22: error: asm/page.h: No such file or directory

這個問題在 這邊 也有被提出來。

簡單的說,就是 2.6.20 之後的 kernel 目錄有點點變動了,所以,在 compile 的時候,引用舊的結構的程式碼需要做個調整,或直接在你的 header file 裡面加上 soft link :
ln -s /usr/src/linux/include/asm/page.h /usr/include/asm/

2008/12/11

[Linux] ping: sendmsg: operation not permitted

錯誤訊息跟 這邊 看起來是一樣的,不過在處理上面有點點不大一樣。

簡單的說,今天把手邊的 ubuntu 8.04 也跟著昇級成 8.10 ,結果跑完有錯誤訊息跑出來:
ping: sendmsg: operation not permitted

結果是把 firestarter 從 rcS 裡面拿掉就好了。

嗯~ 很討厭的東西。

[Linux] iptables CHAIN 說明

Linux 底下有一個功能很強大的工具叫做「iptables」,這個工具結合了 Linux Kernel 的設計,在 user mode 底下操作,達成 netfilter 的功能。
(這句話說的有點複雜,簡單的說,就是你在 Linux 上面要擋什麼網路封包,搞什麼封包轉發的,通通都是靠這味啦~)

我寫這篇,就想把 iptables 的功能先介紹到,晚點再來解釋它跟 netfilter 的關係,以及它的親戚 ebtables 的功能。

首先是在指令操作上的幾個名詞:
TABLE﹑ CHAINS﹑ JUMP
以這個指令來說:
iptables -t nat -A POSTROUTING -j DROP

nat 就是 TABLE 名, CHAINS 就是 POSTROUTING , JUMP 就是 DROP 。

來看圖好了:


一個封包由左側進來,先判斷要不要 FORWARD 轉發,要轉發就直接出去了,不轉發就走上面的路線,由本地端來判斷要不要做路由 ROUTING 的動作,要的話就還會轉出去,不要的話當然就本地收下來了。

在 TABLE 上面負責的工作,就是 NAT 負責進出、FILTER 負責本地端的進出,跟轉發的 FORWARD ,還有就是 MANGLE 負責本地端進出的修改, NAT 進出前的修改,判定轉發後的修改。

LOCAL 所有的 CHAINS 就是 INPUT 跟 OUTPUT
FORWARD 的 CHAINS 才有 PREROUTING 跟 POSTROUTING。

JUMP 的部份,就要看各個 JUMP 支援的動作了。

--
參考連結:
iptables 入門導引

2008/12/09

[Linux] 嵌入式系統上常見的檔案系統註記

之前有寫過這篇squashfs 介紹的文章,不知道為什麼,這篇隨便寫寫的文章被排到蠻高的位置,不過 bounce rate 也很高 (真是汗顏) ,那個時候還沒想到要玩 squashfs ,只是覺得這個 fs 還蠻有意思的,所以做個書籤,記錄一下,想說以後應該會用到。只是沒想到,後來真的用上了。

首先要提出來的,是嵌入式系統上面重視的幾個特點,像是:

  • 斷電可靠度
  • 耗損平衡
  • 資料壓縮
  • 垃圾收集
  • 就地執行


斷電可靠度,在唯讀的情況下,應該都可以過關,但是 rw 的時候,不知道其它的 fs 能不能過關,意即,如果今天執行寫入動作的時候斷電了, fs 能不能在下次開機讀取的時候,仍然維持正常運作,在日誌檔、inode、目錄等結構都不用擔心會有破碎的情況。

耗損平衡則是因為 NOR/NAND flash 的特性,在寫入 0 區的時候,需要 erase block ,然而這會造成寫入壽命提早完結,固定區塊寫入次數過多的情況,所以說,需要依靠軟體的部份加以處理。(垃圾收集也是跟這個物理特性有關)

資料壓縮,主要是在 SDRAM 價格比 flash 便宜﹑及寫入更新的動作在嵌入式裝置上面其實遠遠低於讀取的情況下構成的解決方案。所以我們可以使用資料壓縮來讓嵌入式裝置在運行期間才真的解開來運作。

就地執行(XIP)的特性在 squashfs 及 jfs 上面都還沒有看到,所以這個特點我就跳過了.... (其實我還不知道什麼情況下可以 XIP)

這些功能除了就地執行之外,其它的 jffs2 都有達成目標,這應該也是 jffs2 之所以可以歷久彌新的原因之一(參考zylix666 的文章)。
再來是 squashfs 官網提到的, squashfs 只是一個 fs structure ,真正讓它可以壓的比別人小的是背後的演算法。但是在演算法的部份,因為 LZMA 在 Linux kernel 的支援還不存在,所以 squashfs 想要包進 kernel 就只好改預設演算法為 gzip ,僅管如此, squashfs + LZMA 的部份還是很多人在用。 (目前似乎是最小的組合)

另外翻到 ramfs 跟 tmpfs 的比較的部份,這兩種檔案系統的用法幾乎一樣,我只看到在使用的對象上面, ramfs 使用的是 physical ram ,而 tmpfs 則使用的是 logical 的 memory address ,所以 tmpfs 也有可能會使用到 swap (這點之前沒有意識到,換句話說, tmpfs 不見得可以「很快」。

----
參考連結:
* LZMA
* jffs2
* squashfs
* ramfs 和 tmpfs 的使用
* cramfs
* 快閃記憶體

2008/12/03

[軟體] Ubuntu 網路電視的使用 (sopcast)

來源是這邊 (only ubuntu)

= 安裝相依套件 =
sudo apt-get install qt3-apps-dev vlc build-essential

= 下載 sopcast 的函式庫 =
點我下載

用 unzip 解開它,並且進到目錄裡頭再打下列指令:
sudo cp sp-sc-auth /usr/bin/sp-sc

= 下載 GUI 的部份 =

這是 RMKOD 版的 GUI
再一次,用 unzip 解開它,同時進到目錄裡頭執行:
sudo qmakesudo makesudo make install

這樣就完成了安裝的部份,不過還有兩件事情它在文章裡頭提到的:
1. 建議在 sopcast 裡頭設定專屬的 player 用 vlc 。
2. 在 firefox 的 about:config 裡頭,新增字串,名稱是 network.protocol-handler.app.sop ,值是 qsopcast ,這樣就可以用 firefox 直接看了(?)。

第二點其實蠻難的,會用 sopcast 的網站,通常會指定 player 是 mediaplayer ,所以在 Linux 底下也很難成功,不過還是可以去看一下 link 指到哪邊,再貼出來看就是。

2008/12/01

[Google] 用 Gmail 寄信

之前寫過用 php 的 libcurl 透過 gmail 寄信 的方式(…呃,我不是故意讓名字這麼長的),不過呢,這個方式「好像」遇到 libgmailer 沒有更新的囧境了,所以我又在前一陣子跑去找了別的替代方式。

畢竟, gmail 是很好用的 mailer ,所以我的 solution 就是!! (自動背景配樂!~)

少林功夫加唱歌跳舞! ♬

... 冷掉了

#!/usr/bin/php -q
<?
function body_get_receiver($body)
{
$cols = explode("\n", $body);
for ($i = 0; $i < keyword =" substr($cols[$i]," keyword ="="" keyword ="="" ans =" strstr($cols[$i]," ans =" substr($ans," i =" 0;" ans =" substr($ans," cols =" explode(" to_name="$cols[0];" body = "" i="0;" subject =" $argv[$i+1];" fn="php://stdin" body="" fs="fopen($fn," to_address =" ($argv[1])" fs =" fopen(" attach = "" mail =" new">IsSMTP(); // set mailer to use SMTP
$mail->CharSet = "utf8";
$mail->Encoding = "base64";
$mail->From = "anton.tw@gmail.com";
$mail->FromName = "anton";
$mail->Username = "帳號@gmail.com";
$mail->Password = "密碼";

$mail->Host = 'ssl://smtp.gmail.com';
$mail->Port = 465; //default is 25, gmail is 465 or 587
$mail->SMTPAuth = true;

$mail->addAddress($to_address, $to_name);
$mail->WordWrap = 50;
if (!empty($attach))
$mail->AddAttachment($attach);
$mail->IsHTML(false);
$mail->Subject = $subject;
$mail->Body = $body;

if(!$mail->Send())
{
echo "郵件送出失敗! ";
echo "錯誤訊息: " . $mail->ErrorInfo . " \n";
return false;
}
else
{
echo("寄信 $attach 給 $to_name <$to_address> 完成! \n");
return true;
}
}

?>

使用方式,就是 echo "test" | mail xxx@gmail.com -s "subject"

裡面的 body_get_receiver 這個 function 是特別為了 mediawiki 生的。因為 mediawiki 的收信人是直接 pipe 在 mail body 裡面的,所以沒辦法知道收信人是誰的時候,就從 body 裡面拉出來,就好了。(其實還有不少例外沒處理,不過,管它的~ 我起個頭而已,後面有人想玩就接著玩唄~)

[Windows] git-bash 底下的工具

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