2009年4月12日星期日

while i=`line`与while read i的区别


a)
while i=`line`
do
echo "i is set to $i"
done < my_file

b)
while read i
do
echo "i is set to $i"
done < my_file

there are a few differences. e.g., try inputting a line
ending with backslash ("\"), such as:

first line \
second line

the read i version reads both lines into one instance of
$i (sans the escaping backslash: "first line second line").
but the `line` version executes twice, first reading the
backslash-ending line (with the backslash) into an instance
of $i ("first line \"), and the second time 'round the loop
the subsequent line into $i ("second line").

another difference: leading spaces/tabs are stripped in
the read i version (at least in some versions of various
shells; i cannot recall if all shells have always done this
or not).

refers to Heiner Steven's unix shell threads

2009年3月10日星期二

GTK+界面无法激活FCITX

升级ibus至1.1版本后无法启动。运行ibus-setup报以下错误

Traceback (most recent call last):
File "/usr/share/ibus/setup/main.py", line 359, in
Setup().run()
File "/usr/share/ibus/setup/main.py", line 77, in __init__
self.__init_ui()
File "/usr/share/ibus/setup/main.py", line 90, in __init_ui
self.__config = self.__bus.get_config()
AttributeError: 'Bus' object has no attribute 'get_config'

没办法,从fcitx svn上check了源码(3.6.0RC),打了了一个deb包。安装过程参照了英文Locale下使用中文输入法
, 重启X后, 发现所有的GTK程序无法用激活fcitx, 一番折腾后, 貌似XIM找不到正确的gtk.immodules配置文件引起的。解决办法:
1. gtk-query-immodules-2.0 > ~/.gtk-2.0/gtk.immodules
2. 在.profile文件里增加一行: export GTK_IM_MODULE_FILE=~/.gtk-2.0/gtk.immodules
3. 编辑/etc/X11/Xsession.d/95xinput

#!/bin/bash
export XMODIFIERS="@im=fcitx"
export XIM=fcitx
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE="xim"
export QT_IM_MODULE="xim"
fcitx

4. 注意"xim"大小写要与~/.gtk-2.0/gtk.immodules里一致

2009年3月3日星期二

从源码编译fcitx的DEB包

sudo apt-get build-dep fcitx
svn checkout http://fcitx.googlecode.com/svn/trunk/ trunk
svn export trunk fcitx
cd fcitx
./autogen.sh
fakeroot dpkg-buildpackage -b

2009年2月26日星期四

今天碰到一个MIME问题,在ROX中(nautilus, thunar中正常),.doc(MS-Word)被识别被text/plain,导致我在为其他文本文件如.txt设置set run action: xterm -e vi "$@"后,.doc文件也会用vi打开。用MIME-Editor发现text/plain中包含了.doc文件类型。
以'su'编辑/usr/share/mime/globs文件,删除行 text/plain:*.doc
问题就解决了。

2009年2月24日星期二

XToolkit on Solaris/Linux

Starting with release J2SETM 5.0, AWT has been re-implemented on the Solaris and Linux platforms. The new Toolkit implementation provides the following advantages:
  • Removes the dependency on Motif and Xt libraries.
  • Interoperates better with other GUI Toolkits.
  • Provides better performance and quality.

The new Toolkit (XToolkit) is the default on Linux in J2SE 5.0. Solaris will continue to use the MToolkit (Motif-based Toolkit) as the default in J2SE 5.0, but eventually will be replaced with XToolkit.

Explicitly Setting the Toolkit

You can explicitly set the toolkit for an applet or application using an environment variable or a system property. Keep in mind that the environment variable overrides the system property.

  • Setting the toolkit for an application:

    • Using an environment variable. This needs to be set before starting the VM.
       csh:
      setenv AWT_TOOLKIT XToolkit #selects the XToolkit
      setenv AWT_TOOLKIT MToolkit #selects the MToolkit

      ksh/bash:
      export AWT_TOOLKIT=XToolkit
      export AWT_TOOLKIT=MToolkit

    • Using a system property on the command line:
       java -Dawt.toolkit=sun.awt.X11.XToolkit MyApp
      java -Dawt.toolkit=sun.awt.motif.MToolkit MyApp
  • Setting the toolkit for an applet:

    • Using an environment variable.

      If the browser is started from a terminal window, the environment variable must be set in the terminal window before launching the browser. If the browser is launched from a desktop icon or menu, the toolkit for an applet can't be set using an environment variable. The Java Plug-in Control Panel should be used instead.

    • Using the Plug-in Control Panel:

      • Launch the Java Plug-in Control Panel:
        $java_home/bin/ControlPanel

      • Add the system property to the Java Runtime Parameters field under the Advanced tab.
        -Dawt.toolkit=sun.awt.X11.XToolkit
        -Dawt.toolkit=sun.awt.motif.MToolkit

2009年2月7日星期六

N70 with Ubuntu

以下命令必须以"su"身份执行

1)检测手机:

# obexftp -u

输出:
Found 2 USB OBEX interfaces
Interface 0:
Manufacturer: Nokia
Product: Nokia N70
Interface description: SYNCML-SYNC
Interface 1:
Manufacturer: Nokia
Product: Nokia N70
Interface description: PC Suite Services
Use '-u interface_number' to connect
Nothing to do. Use --help for help.

接口1将N70作为一个文件服务器提供出来。

2)查看内存卡内容

# sudo obexftp -u 1 -v -l

以上命令查看有几个分区, 一般是C:和E:两个分区
# sudo obexftp -u 1 -v -l C:/Nokia/
3)创建目录
# obexftp -u 1 -v -C E:/Songs

4)上传多个文件

# obexftp -u 1 -v -c E:/Songs -p $HOME/Songs/*.mp3

5) 删除一个目录

# obexftp -u 1 -v -k E:/Songs

thanks to stylesen's Nokia N70 with Debian Etch!