2010/12/17

[軟體][Linux] Gimp 2.7.3 的改變 (先前都沒注意到)


這個畫面裡面看得到兩個特點:
1. Gimp 單一視窗在 2.7.3 變成選項了,所以可以使用這個選項讓你的視窗變乾淨點,這樣編輯也會快樂一點。
2. 我的 gnome panel 把 gimp 的 menu 吃掉了,所以選單的部份現在合併到 panel 上面去,這樣軟體操作的視窗會變大一點也乾淨點。(這個選項真棒,不過,我是使用 MacBuntu 的安裝 script 之後跑出來的,還不知道是更新哪個部份會出現,暫列到 todo 上去)

沒有列出來的特點:
gimp 現在的 save as file format 只有 xcf 了,如果要另存成別的檔案格式需要使用 file -> export 的選項才有辦法匯出。

--
參考資料:
http://graphicssoft.about.com/od/gimptutorials/a/exporting-files.htm
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=118712
MacBuntu

2010/12/11

[Programming][Linux] Ubuntu 桌面自動跳正妺時計

簡單的說,我想要的效果就像下面這樣:

Ubuntu 用 minik 美人時計當桌面

不過我並不想要每一分鐘都會去換一次,那樣有點傷。
所以我就讓它隨數跳的休息,起碼有 30 秒這樣。

以下是初步可以使用的 script:

#!/bin/bash

PIDFN="/tmp/minik.pid"
[ -f "$PIDFN" ] && kill `cat /tmp/minik.pid`
echo $$ > $PIDFN

while [ 1 ]; do
# http://gameflier.lovelytime.com.tw/photo/2108.JPG

STR=`date +"%H%M"`
OUTPUT="/tmp/.girls.$STR.jpg"
wget "http://gameflier.lovelytime.com.tw/photo/$STR.JPG" -O /tmp/.tmp.girls > /dev/null 2>&1
rm -f /tmp/.girls.*
mv /tmp/.tmp.girls $OUTPUT
gconftool-2 --type string -s /desktop/gnome/background/picture_filename \
"$OUTPUT"
let RND=($SECONDS%10)*6+30
sleep $RND
done

你可以在這邊下載 script 的內容,再讓它加入 start up (始動應用程式) 裡面就可以。
http://dl.dropbox.com/u/1117561/minik.sh

>> 2011.01.25 更新:
加入 pid file 避免重複執行。

2010/12/09

[軟體][Linux] VirtualBox 4.0 Beta 1 釋出, Ubuntu 使用者嘗鮮說明

注意:這篇說明是寫給 VirtualBox 4.0 Beta 1 在 Ubuntu 上面的嘗鮮者,所以需要具備一些細節的知識。

不建議非技術人員或生產人員輕易嘗試,可能會毀掉你的 epc 或工作的環境。

動機:

  • USB 2.0 EHCI 控制器和 RDP 服務器移入到 Extension Pack,不再包含在發佈版本當中,保證了 VirtualBox 是完全的開源軟件。USB 1.1 OHCI 控制器一直是核心部件,兩者的區別在於傳輸速度。(使用打印機和網銀 USB key 需要注意。)
  • 全新設計的用戶界面,增加了 NAT 端口轉發的 GUI 設置界面。
  • 增加 Open Virtualization Format Archive (OVA 格式)的支持。
  • 支持在 32bit host 上的虛擬機使用 1.5GB/2GB 內存。
  • 增加 ICH9 的 3 個 PCI 設備的支持。
  • 支持虛擬機使用 Intel HD Audio 音頻設備。(Windows 7 Guest 不再需要額外找 Realtek AC97 驅動。)
  • 增加 iSCSI、VMDK、VHD 和 Parallels 鏡像的異步 I/O 特性;允許 VHD 和 VDI 的大小縮放。
  • 增加自動更新 Guest Addition 功能
  • 引入 copy-and-paste 的特性。
  • 編程語言:API 增加標準 Java 語言的本地和遠程的支持。
  • 增加 Scale Mode 適應分辨率不高的全屏程序。


確認有足夠的動機之後,我們就開始來安裝,要做的事情如下:

  • 安裝 libstdc++5
  • 安裝 virtualbox 4.0 beta 1 的 deb
  • 安裝 extension pack
  • 修改 usb dev 的 rule
安裝 libstdc++5 的部份很簡單,因為 ubuntu 10.04 已經都換到 libstdc++6 了,所以套件倉庫已找不到這個套件了,我們要另外加來源才能安裝。(當然不建議手動安裝,修改 symbolic link,所以還是用 deb 來安裝)
把這行加到 /etc/apt/sources.list 的最後
 deb http://cz.archive.Ubuntu.com/ubuntu jaunty main universe  
然後再 sudo apt-get update; sudo apt-get install libstdc++5

就可以安裝好 libstdc++5 了。

安裝 virtualbox 4.0 beta 1 的部份也很簡單,先下載  deb 的包裝。記得要找自已的版本代號, 10.04 是 lucid , 10.10 就是 maverick 。
然後是 sudo apt-get purge virtualbox; dpkg -i  virtualbox-4.0_4.0.0~beta1-68572~Ubuntu~lucid_i386.deb
再來是安裝 extension pack ,這邊應該是 oracle 有搞一點專利或保留的部份。一樣先下載檔案,然後在桌面上雙點就可以。(我不知道為什麼 console 底下 chmod +x 不能執行,這邊好像有玄機,所以改天可以再去查一下)
跑到這邊,應該沒事了,你的 virtualbox 已經可以跑了。不過 usb 在 virtualbox 3.2 的版本還可以動作的,到這個昇級完了又不能動了,一樣是老問題,所以先檢查 group 設定,確定這個使用者有在 vboxusers 裡面,以前有寫過,所以就不多提。
不過這次,光這樣還不行,不知道是我的情況比較特別,還是真的是 vbox 的開發人員的疏失,在 usb dev 的 rules 裡面看到了錯誤,所以再修正:
--- /etc/udev/rules.d/10-vboxdrv.rules 2010-12-09 10:18:13.000000000 +0800
+++ /home/anton/10-vboxdrv.rules 2010-12-09 10:15:44.000000000 +0800
@@ -1,5 +1,5 @@
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600"
-SUBSYSTEM=="usb_device", ACTION=="add", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"
-SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"
-SUBSYSTEM=="usb_device", ACTION=="remove", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
-SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
+SUBSYSTEM=="usb_device", ACTION=="add", RUN=/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" vboxusers
+SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN=/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" vboxusers
+SUBSYSTEM=="usb_device", ACTION=="remove", RUN=/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
+SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN=/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"

簡單的說,就是這條 rule 的 RUN 參數指定的時候雙引號沒有括好,所以這條 rule 一定會失敗,失敗了 vbox 就加不了這個 node ,也就不能好好使用 usb device 了。
--
參考資料:
linux toy 上的新聞:http://linuxtoy.org/archives/virtualbox-400-beta-1-%E5%8F%91%E5%B8%83.html
英文指南:如何處理錯誤訊息(Extension 跟 libstdc++5)
ubuntu 上面安裝 libstdc++5 的指南

2010/11/10

[Linux] /usr/lib/libconf2-4/gconf-sanity-check-2 exited with status 256.

昨天在工作的時候,遇到我的 ubuntu 突然不能開 wireshark 的情況。

所以想說重開會不會恢復正常,結果跑出一個 error 是 gconf-sanity-check-2 回傳值 256 的錯誤回報。

然後 gdm 也很怪,桌布都不見了,不過還可以正常 login 。

弄了半天沒有把問題找出來,但是又急著要解決這個問題,所以後來就不爽到拿出上次用 usb creator 做的 "ubuntu 安裝隨身碟"出來,想重灌。還好那時下班時間快到了,且還跟前同事小吹有約要去吃飯,所以就先放掉不管。

早上上班時這個問題還在,翻了下 google 大神的相關文章,結果在 這邊 找到了解法:

1. sudo chmod 755 /etc/gconf/gconf.xml.system
2. sudo chmod 1777 /tmp

1 對我沒有用,還好 2 有用了。

我大概是在玩 openwrt 時有動到 /tmp 的權限。chmod 之後就恢復正常了。

2010/11/08

[軟體][Ubuntu] PPS for Linux 再次推出 (解決 PPS for Linux 沒有聲音的問題) 12/03更新

LinuxToy 拿到的消息。當然 PPS for Linux 推出,對桌面使用者而言是一件好事。不過它的設定還是有不方便的地方,像音效設定的部份:

這樣,我就只用 gnome 播放就沒有聲音了啊~ 因為 gnome 用 pulseaudio 啊。
還好,看一下 ps 裡面的進程, PPS for Linux 還是用 mplayer 抓 wid 嵌進 window 的,所以用 shell script 跳一下就可以解決:
先在 PATH 裡面把 /usr/local/bin 加到最前面,接著把這個丟到 /usr/local/bin/mplayer
#!/bin/bash

PPName=`ps -ef | grep $PPID | awk '{ if ($2 == '$PPID') print $8}'`
PPName=`basename $PPName`
[ "$PPName" != "PPStream" ] && {
/usr/bin/mplayer "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "$10" \
"$11" "$12" "$13" "$14" "$15" "$16" "$17" "$18" "$19" "$20"
exit $?
}

CMD=""
while [ -n "$1" ]; do
OPTIND=1
case "$1" in
-ao)
OPTIND=2
;;
*)
CMD=$CMD" $1"
;;
esac
shift $OPTIND
done
/usr/bin/mplayer $CMD

sudo chmod +x /usr/local/bin/mplayer

懶得自已處理的複製貼上的直接下這邊

[更新]: 12/03 處理 mplayer 平常活動會受這支 script 影響的問題。
[更新]: 12/09 再處理 PPStream 的問題。

2010/11/03

[Linux] Compile Error

error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments

https://wiki.ubuntu.com/CompilerFlags 這邊有提到的問題,解決方式就是在 CPPFLAGS 先用 -Wno-unused-result 。全關的話在 CPPFLAGS 用 -U_FORTIFY_SOURCE 或 -D_FORTIFY_SOURCE=0。

很麻煩厚? 我也這麼覺得,不過接下來還有很多這種東西會跑出來,能不能處理就看自已找資料的能力了。

2010/10/21

[linux] 利用 autossh 和 proxychain 打造家庭辦公室

利用 ssh 製造 tunnel 讓我們可以"逃離公司 MIS 的魔掌" 的方法,我想大家早就會了。這點功夫,在軟體界這個小圈圈其實很容易散布開來的技術,我想還沒有人不會。

不過說到底, ssh tunnel 並不是一個很好的解決方式。因為 ssh tunnel 還是會遇到 connection timeout ﹑需要重連等等情況。遇到這些情況的時候,如果沒有去妥善的處理,又會造成麻煩(註1)。 另外,這個 ssh server 只會是我們的一個跳板,所以如果沒有 proxy 的功能,又會讓你在使用上造成麻煩(註2)。

解決之道在這邊:
1. AutoSSH 像下面這樣一行指令就可以確保這個 ssh tunnel 的連結一直維持運作。我的習慣是用 screen 在 foreground 跑,這樣我可以確切的知道它運作的情況。
 autossh -M 2345 -N -D 2222 remote 

2. ProxyChains 以下的設定檔可以讓我們接上原本只有 remote 可以接上的節點。真正要使用的指令,請參考下面 proxychains 指令的說明。
cat .proxychains/proxychains.conf
DynamicChain
tcp_read_time_out 15000
tcp_connect_time_out 10000
[ProxyList]
socks5 127.0.0.1 2222



2.1 ProxyChains 的指令其實很簡單。像上面提到的例子,我們想訪問公司內部的 web server 該怎麼做?在命令列上面打上:
proxychains firefox

這樣,開出來的 firefox 就會配置在 proxychains 的網路架構上。 (注意喔, firefox 如果已經開啟了,那新增加的行程,會回去原來的 firefox 裡面開一個 tab 而已,這樣就不會用到 proxychains 的配置)
想 ping 公司內部的 A 機器?
proxychains ping A

這樣,應該就有人看出來,其實用法就是在最前面加上 proxychains 而已。
(命令很長厚? 請愛用 alias ,像我都會用  alias psvn='proxychains svn'
alias px='proxychains'

這樣, svn 的訪問就很簡單, porxychains 的使用也縮短成只有 px 兩個字而已。

--
註1: 有人回說,那不是寫一個 shell , loop 去解決就好了嗎? ~ 呃,你一定沒遇過 ssh 被突然斷線的情況,突然斷線之後,原本的 connection 還沒那麼快斷勒,所以,你這時連上去,就會增一個 connection 的數量,最後網路情況如果很糟,你就會在你的 ssh server 上面看到一堆屍體跟沒有用的行程。
註2: 譬如說,我需要連結公司內部的 web service ,那光 ssh proxy socket server 以外,還需要 forward http 或 https 的部份,這樣設定起來就會... 不只是麻煩。

2010/10/14

[Linux] Grub2 的 Error : file not found

前言:Ubuntu 10.10 前幾天剛釋出,就迫不及待想去嘗鮮,所以用昇級的方式花了點時間(註1)昇上 10.10 。結果 10.10 的預設 kernel 不能用,會發生 kernel dump 。還好舊版的 kernel 還在,所以就點了舊版的 kernel 來用。

使用上到也還 okay ,只是跟原本 10.04 的 kernel 版本比起來,又舊了一點,(因為 source list 不一樣咩)
所以我就又把 10.04 的更新版,的 kernel ,拿來這台 10.10 的機器上安裝。

重點來了,結果安裝完畢,重開機, Grub 就跟我報: file not found。
然後停在 grub command line 了。

哇!!!怎辦?還沒玩過 grub2 說。 grub 的急救指令: help tab都派不上用場,看了 Ubuntu 官網上的說明了結果也還是不知道為什麼 set prefix , set root 之後,不能下 linux /boot/vmlinuz-(version) root=/dev/sdaXY ro ... (列 todo 吧 ...)

結論是:
我用了 "Reinstall Grub 的三個方法" 裡的第二個:

sudo grub-install --root-directory=/mnt/ /dev/sdX


這樣就解決了。
--
0. Grub 停在開機時怎麼辦:https://help.ubuntu.com/community/Grub2#Grub shows rescue prompt (and does not continue to boot)
1. Reinstall Grub 的三個方法: https://help.ubuntu.com/community/Grub2#Reinstalling%20from%20LiveCD

2010/10/08

[軟體] oxim 的 deb 包裝

之前 就有寫過 oxim 要怎麼在 ubuntu 上面安裝的方法了,不過,大概是還不夠詳細吧,所以還蠻容易讓人迷惑的。

所以就乾脆做了 deb 的包裝,底下可以下載我用 oxim 上面的 code 包的這個 deb ,這樣安裝應該會方便一點了。

oxim-filter的圖:

更新(2011-05-16):

應要求放到 別的載點 上面。

for ubuntu 10.10 的包:
http://dl.dropbox.com/u/1117561/10.10/oxim_1.4.4_i386.deb
http://dl.dropbox.com/u/1117561/10.10/oxim-filters_1.4.4-1_i386.deb
http://dl.dropbox.com/u/1117561/10.10/oxim-setup_1.4.4-1_i386.deb

for ubuntu 10.04 的包:
http://dl.dropbox.com/u/1117561/10.04/oxim_1.4.4_i386.deb
http://dl.dropbox.com/u/1117561/10.04/oxim-setup_1.4.4-1_i386.deb
http://dl.dropbox.com/u/1117561/10.04/oxim-filters_1.4.4-1_i386.deb

// oxim 的 source code 從 cvs 已經沒辦法 checkout 了。
// opendesktop 的 ftp 也下不了,所以另外找人家的 mirror 來用。

更新(2011-05-16):
11.04 的 deb
http://dl.dropbox.com/u/1117561/11.04/oxim_1.4.4_i386.deb
http://dl.dropbox.com/u/1117561/11.04/oxim-setup_1.4.4-1_i386.deb
http://dl.dropbox.com/u/1117561/11.04/oxim-filters_1.4.4-1_i386.deb

--
參考連結:
oxim 在 ubuntu 7.04 的安裝實錄
Debian新維護人員手冊 簡單打包 deb 的例子
OXIM 一鍵安裝
OXIM源碼的來源

2010/09/20

[Linux] endian 問題更新

之前在 [Linux] Kernel Module 帶入 Parameter 以及 Endian 的問題 就寫過這篇了,今天再重新做個整理:
1. 一般 intel 的機器是 little endian
2. MIPS 有可能是 le ,也有可能是 be ,所以要確認一下。
3. 確認的 code 如下:(我用了兩種方法喔)
const int endian = 1;
#define is_bigendian() ( (*(char*)&endian) == 0 )
bool isBigEndian()
{
int no = 1;
char *chk = (char *) &no;

if (chk[0] == 1) {
return 0;
} else {
return 1;
}
}

main()
{
printf("this is %d \n", (int) isBigEndian());
printf("is_bigendian %d \n", is_bigendian());
return 0;
}

2010/08/22

[Linux] 搞定 ubuntu 裡的 ffmpeg

我的 ffmpeg 在 ubuntu 裡面預設的運作有點奇怪,重新 encode mp4 之類的格式的時候會發生:
Unsupported codec (id=86020) for input stream #0.1 之類的錯誤

Google 查文之後找到:
這邊 有很簡單的解答。

簡單的說有三種解法:
1. 抓最新的 ffmpeg 下來重新編過,就可以。
2. 執行 sudo apt-get install ffmpeg libavcodec-unstripped-52
3. sudo apt-get install ffmpeg ubuntu-restricted-extras
4. 更新套件來源
sudo wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list; sudo apt-get -q update; sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring; sudo apt-get -q update

再安裝 ffmpeg
sudo apt-get install ffmpeg

因為我是 10.04 所以其實很簡單,就是裝完 libavcodec-unstripped-52 就可以。

這樣,我就可以把什麼 .DAT, .MPG .AVI 的通通壓成 .mp4 了。
空間我剛剛看了一下,如果是 mpeg2 的檔案,大概是 1/10 而已。

2010/07/22

[Linux] Ubuntu 10.04 的文字模式

其實應該不是說是文字模式,而是怎麼在 ubuntu 10.04 裡面stop gdm 。

很簡單,就在 /etc/default/grub 裡面把原本的這行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改成
GRUB_CMDLINE_LINUX_DEFAULT="text"
然後再 sudo update-grub2 就可以了。

2010/07/08

[Linux] 好文推:從 2.4 到 2.6

這篇文章很值得想在 Linux Kernel 上工作的同學參考:

http://www.ibm.com/developerworks/cn/linux/l-module26/index.html

我的問題只是 module_param 的時候出了問題,所以參考它的說明修改 2.4 版本時的 code,範例如下:


#include <linux/module.h>
#ifdef LINUX26
#include <linux/moduleparam.h>
#endif

int debug = 0;
char *mode = "800x600";
int tuner[4] = {1, 1, 1, 1};
#ifdef LINUX26
int tuner_c = 1;
#endif
#ifdef LINUX26
MODULE_PARM(debug, "i");
MODULE_PARM(mode, "s");
MODULE_PARM(tuner,"1-4i");
#else
module_param(debug, int, 0644);
module_param(mode, charp, 0644);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 10)
module_param_array(tuner, int, &tuner_c, 0644);
#else
module_param_array(tuner, int, tuner_c, 0644);
#endif
#endif



更新: 嘖,怎麼沒有第一時間看出來:
#ifdef LINUX26
MODULE_PARM(debug, "i");
MODULE_PARM(mode, "s");
MODULE_PARM(tuner,"1-4i");
#else


這段寫反了,應該 LINUX26 都小寫的才對。

2010/06/16

[Linux] 不要再 IE4Linux 了啦!! Ubuntu 使用 winetricks 記錄

話說,從以前就一直很依賴 wine 去處理一些 MS Windows 的軟體,像看盤軟體 之類的,在 Linux 上面根本就沒有人要支援,所以要看 IE Only 的網頁就很痛苦,像 Windows 上面 firefox 可以用 ietab 之類的東西處理,而在 Linux 上面因為沒有 IE 所以要這樣玩也不行。

不過因為有IE 4 Linux的關係,所以在 Linux 底下用 wine 裝 IE 達成了某種的方便性,不需要再 download 一堆牽來牽去的 iesetup 程式,也不用像某些人建議的,用 virtualboxvmware 這種大型模擬平台,來操作一兩個特別的軟體。

然而,隨著時代的變遷, IE4Linux 在許多的 Linux 發行版上面,開始遇到了困難,像這篇,還有這篇,再再都顯示了 ie4linux 的安裝程序還有官網提供的服務都有著缺陷和現行發行版不相容的的問題。

還好,我們有了新的解決方案: winetricks

Microsoft Windows Compatibility Layer (winetricks)
Wine is a compatibility layer for running Windows applications on Linux.
Applications are run at full speed without the need of cpu emulation. Wine
does not require Microsoft Windows, however it can use native system dll
files in place of its own if they are available.
.
This package includes a shell script that can be used to download and
install various redistributable libraries that may be needed for some
programs to work in Wine.

安裝 winetricks 很簡單, ubuntu 的 source list 裡面就有了:
sudo apt-get install winetricks

執行方式:
winetricks

它會開始詢問你想要安裝的軟體:

像我想要玩 ie6 ,就會幫我安裝 ie6:


IE 7 也沒有什麼問題,只是好像不能同時安裝 ie6 跟 ie7 (跟 windows 一樣,要的話應該要指定 WINEPREFIX 的目錄)


安裝流程還蠻快的


嘿嘿,一下子,我的 ie7 就安裝好了。



結論是,拜託,不要再叫我去用什麼 ie4linux 了,這個簡直是要我的命。

2010/05/22

[Linux] SVK 在 Ubuntu Lucid (10.04) 不見了!!

話說筆者是一個很依賴 svn / svk 版本控管軟體源碼的一個軟體工人,自從把作業平台昇級到 ubuntu lucid 之後, svk 就從 repository 裡面消失了, apt-get install svk 失敗了!!這下可好,一切都用的很高興,但是沒有 svk 等同沒有 local 的 svn 可以使用。

只好暫時先用 svn file access 來替代。(不過要是沒差的話,就用不著裝 svk 了啊~~~)

還好 google 了一下,找到這三個套件,下載 deb 檔案:

接著再做 apt-get install -f 補齊系統相依的其它套件就可以使用 svk 了。

2010/04/29

[Linux] Bash 的錯誤訊息

話說我常常在 .bashrc 裡面加自已的一些偏好,所以我的 bashrc 長的很肥,當然跑起來會慢一點,不過還好有 screen 可以用,所以一直以來也沒什麼不妥,不過最近發現 scp 到某些機器的時候會看到一個錯誤訊息:
bind: warning: line editing not enable
去查了一下,結果找到應該是這兩行的問題:
bind '"\x1b\x5b\x41":history-search-backward'
bind '"\x1b\x5b\x42":history-search-forward'
這兩行對我來說還蠻重要的,因為用這個功能,可以只打一個 s (按方向鍵上) 就看到 bash 歷史記錄裡的 s 開頭的命令記錄,還蠻方便的;如果出了問題不能用,或著造成困擾還蠻慘的。

所以要想辦法解決,在 opensuse.org 上面有提到一個迴避的方式,就是利用 "$-" 這個變數來解決。
所以可以寫成這樣:
case "$-" in
    *i*)
        bind '"\x1b\x5b\x41":history-search-backward'
        bind '"\x1b\x5b\x42":history-search-forward'
        ;;
esac  

就可以解決這個錯誤訊息的問題了。
--
參考網址:
http://lists.opensuse.org/opensuse-bugs/2009-10/msg10451.html

2010/04/07

[Linux][軟體] VirtualBox 在 Lucid 底下看不到 USB

話說,昇級到 Lucid (10.04) 的版本之後,其實沒有什麼太大的問題,架構改了不少,但是在適應上面都還 okay 。(除了 grub2 真的很麻煩,要另外找時間去面對。)
扯太遠,拉回來,最大的問題就是我的 VirtualBox 在跑的時候, USB 清單不見了:
這個東西不見,真的蠻麻煩的,所以去找了一下 VirtualBox 討論區 裡面有提到這個問題,只要
sudo hald --daemon=no
就可以了,因為 VirtualBox 還是需要 hal 的支援。
結果會像下面:


--
參考連結:
VirtualBox 討論區

2010/03/24

[Linux][軟體] 線上看台視新聞

好啦,因為很多網站都是 IE Only ,所以在 Linux 底下很難搞。而且 Hinet Channel 要看還要一直點個不停,好麻煩,所以晚上花了點時間 parsing 台視網頁 串接 mplayer ,這樣就只要有網路就可以看網路電視新聞了;下面是我的 script :
#!/bin/bash

LIST=`wget "http://www.ttv.com.tw/news/newsContentV.htm" -O - | \
sed 's/\/videocity\/video_play.asp?id=\([0-9]*\)/\n##\1##\n/g' | \
sed -e '/##[0-9]*##/!d' -e 's/##\([0-9]*\)##/\1/g'`
FLVURL="http://www.ttv.com.tw/group/VideoGallery/CreateXML.asp?flvid=NUM:"

for i in $LIST; do
FLV=`wget "${FLVURL}$i" -O - 2>/dev/null | \
sed "s/.*url='\([^\']*\).*/\1/"`
mplayer $FLV -zoom -y 480 -x 848 -fs
done


(其實我更希望四元兄的 Beta Radio 趕快更新,這樣才可以看更多網路新聞電視。

2010/03/16

[Linux] Kernel Module 帶入 Parameter 以及 Endian 的問題

最近參與的工作有在玩 Kernel 的部份,首先要做兩個 Kernel Module 的常見任務介紹:
1. Module 帶入 Parameter 的部份.
其實也很簡單,在 module 定義 macclone 這個變數,再用 module_param 帶入它的值。
static short int macclone = 1;

module_param(macclone, short, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
MODULE_PARM_DESC(macclone, "An Short");

int init_module(void)
{
struct net_device *ndev = NULL;

printk("a = '%d'\n", macclone);


應用時,是用 sudo insmod hello macclone=1
這樣帶進去的。詳細的部份,可以參考 LinuxTopia (中文是翻作 「Linux 討皮癢」嗎?)上面的說明。

2. C code 裡面應用 Little Endian 和 Big Endian 的部份.

單純的 C code 如果要應用 Little Endian 和 Big Endian 的分別其實可以直接 include endian.h 就可以:
#include <stdio.h>
#include <endian.h>

int
main()
{
#ifdef LITTLE_ENDIAN
printf("little\n");
#else
printf("big\n");
#endif

return 0;
}

如果沒有 endian.h 可以用,像是在 kernel 裡面決定 endian (下面我不確定是最佳解...),可以用在 這邊 的 blog 提到 IBM 網站上找到的資料:
const int endian = 1;
#define is_bigendian() ( (*(char*)&endian) == 0 )
union {
int val;
unsigned char c[sizeof(int)];
}u;


--
參考網址:
關於 little endian 和 big endian
Big Endian 和 Little Endian
Linuxtopia

2010/03/07

[Linux] Gnome 的網路代理伺服器(gnome-network-properties)設定有蟲


前幾天發現的,在 Gnome 的網路代理伺服器設定裡面有問題,明明 Use authentication 沒有開,但是 gconf 底下就會看到 use_http_proxy 被 enable 起來了,這樣的做法會讓某些 proxy 設定出了問題。

不知道之前有跟我說他的 proxy 設定有問題的同好是不是這個問題上面出的錯?

總之,這個問題得要處理才是。所以我的 on location change 這個 script 要修改一下,變成:
CMD=gconftool-2
${CMD} --type string -s /system/proxy/mode none
${CMD} --type bool -s /system/http_proxy/use_http_proxy false
${CMD} --type bool -s /system/http_proxy/use_same_proxy false
${CMD} --type bool -s /system/http_proxy/use_authentication false

這樣的方式來處理 proxy 預設設定。(因為我預設沒有用 authentication 啊~)

2010/02/12

[Linux] Gnome 設定工具 script 範例

Gnome 的設定很多,大部份都有 GUI 的工具可以協助設定,然而不是每一樣東西都有 GUI 工具就是方便,像我是一個鍵盤的重度使用者,所以希望可以不要每次都要開 GUI 出來設定。像這樣在 command line 底下做 GUI 的設定需求其實還不少,所以 gnome 的設計在 command line 底下也有一個工具叫 gconf-editor (屁啦,這個是用 GUI 作所有的細項設定用的) 是叫 gconftool2 的可以幫忙。以下是一個代理伺服器的設定範例,讓你可以再設一個鍵盤快速鍵快速設定 proxy :
$ cat bin/on_location_change
#!/bin/bash
info () {
zenity --info --text="$@"
}

mode=$(gconftool-2 --get /system/proxy/mode)
if [ "$mode" = "none" ]; then
info "Beta 作用中"
gconftool-2 --type string --set /system/proxy/mode manual
gconftool-2 --type string --set /system/proxy/socks_host 192.168.56.101
gconftool-2 --type int --set /system/proxy/socks_port 7070
else
info "Beta 不作用"
gconftool-2 --type string --set /system/proxy/mode none
fi
gconftool-2 --type list --set /system/http_proxy/ignore_hosts \
--list-type string "[localhost,127.0.0.0/8,*.local,10.*.*.*,192.*.*.*]"

2010/02/08

[Linux] iptables 入門小記

iptables 是 GNU / Linux 底下很常見的網管軟體,簡單的說, iptables 就是在 kernel 裡面做一個 ip 層的表格,這個表格可以控制封包的流動與過濾的行為。所以在 iptables 上面必看的兩個表格是: nat 與 filter 。
iptables -t nat -L -n
iptables -t filter -L -n
可以查看上面提到的這兩個表格。
-t 後面接表格名稱, -L 是列表的意思, -n 是代表不用解析名稱的意思。

在 nat 底下有三個鏈結(chain),分別是 OUTPUT﹑POSTROUTING﹑PREROUTING。
在 filter 底下也有三個鏈結,分別是 FORWARD﹑INPUT﹑和 OUTPUT。

詳見下表,可以有一個比較清楚的概念:

如果上面的流程都了解了,再開始看 iptables 的指令怎麼下會比較清楚哦。
--
參考網址:http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html

[Windows] git-bash 底下的工具

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