2013年9月27日 星期五

使用 Hornil StylePix 替相片加上簽名檔

在《Hornil Stylepix》這篇文章裡提到了 Hornil Stylepix 這個軟體;而在《使用 PhotoScape 替相片加上簽名》這篇文章裡,我使用了 PhotoScape 幫相片加上了簽名檔。

這裡,我打算使用 Hornil StylePix 替相片加上簽名檔。首先,在 Stylepix 裡開啟相片檔:

然後,從「對象」選擇「插入圖像」:

接著開啟簽名檔的圖檔。簽名檔事先準備好,並儲存成透明背景的 PNG 檔,其中準備簽名檔的方法可以參考《使用 Pixlr 的線上編修工具製作個性化簽名檔》這篇文章。

插入簽名檔的圖片後,可以調整任意調整簽名檔的大小。不過,我試了很久,在 PhotoScape 裡我可以很簡單地直接「等比例」縮放簽名檔圖片的大小,但是在 Stylepix 我一直找不到簡易且精確「等比例」調整簽名檔圖片大小的方法。

此外,Stylepix 也支援圖層,在圖層 (分層) 裡也可以調整簽名檔圖片的透明度。

Hornil Stylepix 的支援的圖像編修功能相當多。但,若要幫相片加上簽名檔,我偏好選擇 PhotoScape,因為它的操作比較簡單容易些。不過,若讀者對相片編修有興趣,將 Hornil Stylepix 與 PhotoScape 搭配一起使用也是個相當棒的選擇。

2013年9月26日 星期四

Hornil Stylepix

Hornil StylePix 是一個小巧,而功能強大的圖片編修處理軟體。Hornil Stylepix 是 Free 的版本,而進階的 Hornil StylePix Pro 則是付費的版本。

使用者只要從 Hornil 的網站下載最新的 StylePix 1.13.0.4,然後執行下載回來的 HornilStylePix1.13.0.4Setup.exe 安裝就可以了。

安裝完成後,執行的程式畫面如下:

安裝完 Hornil Stylepix 後,它預設似乎是簡體中文的介面,所以習慣上可以改變成繁體中文。在「視图」這項找到選項設定,如下:

然後將語言的項目改成「Chinese Traditional」就可以:

Hornil Stylepix 的功能很多,這篇文章主要不介紹它的軟體功能,有興趣的使用者可以安裝起來多多研究。

2013年9月23日 星期一

變更 CentOS 的 hostname

1. 修改 /etc/hosts,在 127.0.0.1 裡加上變更後的 hostname:

127.0.0.1       new-hostname    localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6

2. 修改 /etc/sysconfig/network,將 HOSTNAME 參數的值改成變更後的 hostname:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=new-hostname

3. 執行 hostname 指令:

hostname new-hostname

基本上執行完這個步驟就可以了。

2013年9月20日 星期五

在 CentOS 6.4 安裝 Oracle JDK 6

安裝完 CentOS 6.4 後,我發現 CentOS 的套件庫裡也沒有 Oracle JDK 的套件,都是收錄了 OpenJDK。於是,我打算依照之前的作法自行安裝 Oracle JDK 6。在動手安裝之前,我還是爬了爬文,找了幾篇參考的文章:

  • HOW TO INSTALL AND SETUP ORACLE JAVA JDK IN CENTOS 6
  • Install Sun/Oracle Java JDK/JRE 6u45 on Fedora 19/18, CentOS/RHEL 6.4/5.9
  • Install Oracle Java JDK/JRE 7u25 on Fedora 19/18, CentOS/RHEL 6.4/5.9
  • 安裝的步驟並不麻煩,首先自 Oracle 的網站下載了 Oracle JDK 6 的 jdk-6u45-linux-x64-rpm.bin 這個檔案,然後執行它:

    $ sudo ./jdk-6u45-linux-x64-rpm.bin

    接著,使用 alternatives –install 指令安裝 Oracle JDK:

    $ alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_45/jre/bin/java 20000
    $ sudo alternatives --install /usr/bin/javaws javaws /usr/java/jdk1.6.0_45/jre/bin/javaws 20000
    $ sudo alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/java/jdk1.6.0_45/jre/lib/i386/libnpjp2.so 20000
    $ sudo alternatives --install /usr/lib64/mozilla/plugins/libjavaplugin.so libjavaplugin.so.x86_64 /usr/java/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so 20000
    $ sudo alternatives --install /usr/bin/javac javac /usr/java/jdk1.6.0_45/bin/javac 20000
    $ sudo alternatives --install /usr/bin/javac javah /usr/java/jdk1.6.0_45/bin/javah 20000
    $ sudo alternatives --install /usr/bin/jar jar /usr/java/jdk1.6.0_45/bin/jar 20000

    而根據爬文找到的文章,應該也可以使用像這樣的指令設定 JDK,如:

    $ sudo alternatives --set /usr/bin/java java /usr/java/jdk1.6.0_45/jre/bin/java

    由於我在 CentOS 6.4 裡也安裝了 java-1.7.0-openjdk-devel,所以我執行了下面這個指令選擇 Oracle JDK 作為預設的 Java:

    $ sudo alternatives --config java

    但,當我要修改 jar 和 javah 時,卻發現 /usr/bin/jar/usr/bin/javah 消失了。

    最後,我乾脆將 java-1.7.0-openjdk-devel 移除,然後手動建立 /usr/bin/java 等相關連結。 (悶)

    $ ls -l /usr/bin/ja*
    lrwxrwxrwx. 1 root root 21 Sep 16 12:51 /usr/bin/jar -> /etc/alternatives/jar
    lrwxrwxrwx. 1 root root 27 Sep 16 12:54 /usr/bin/jarsigner -> /etc/alternatives/jarsigner
    lrwxrwxrwx. 1 root root 22 Sep 16 12:40 /usr/bin/java -> /etc/alternatives/java
    lrwxrwxrwx. 1 root root 23 Sep 16 12:40 /usr/bin/javac -> /etc/alternatives/javac
    lrwxrwxrwx. 1 root root 25 Sep 16 12:55 /usr/bin/javadoc -> /etc/alternatives/javadoc
    lrwxrwxrwx. 1 root root 23 Sep 16 12:41 /usr/bin/javah -> /etc/alternatives/javah
    lrwxrwxrwx. 1 root root 23 Sep 16 12:55 /usr/bin/javap -> /etc/alternatives/javap
    lrwxrwxrwx. 1 root root 24 Sep 16 12:37 /usr/bin/javaws -> /etc/alternatives/javaws

    其實,/usr/bin/java 只是一個指向 /etc/alternatives/java 的連結。而 /etc/alternatives/java 才是真正指向 Java 的連結。

    $ ls -l /etc/alternatives/ja*
    lrwxrwxrwx. 1 root root 29 Sep 16 12:51 /etc/alternatives/jar -> /usr/java/jdk1.6.0_45/bin/jar
    lrwxrwxrwx. 1 root root 35 Sep 16 12:54 /etc/alternatives/jarsigner -> /usr/java/jdk1.6.0_45/bin/jarsigner
    lrwxrwxrwx. 1 root root 34 Sep 16 12:40 /etc/alternatives/java -> /usr/java/jdk1.6.0_45/jre/bin/java
    lrwxrwxrwx. 1 root root 31 Sep 16 12:40 /etc/alternatives/javac -> /usr/java/jdk1.6.0_45/bin/javac
    lrwxrwxrwx. 1 root root 33 Sep 16 12:55 /etc/alternatives/javadoc -> /usr/java/jdk1.6.0_45/bin/javadoc
    lrwxrwxrwx. 1 root root 31 Sep 16 12:41 /etc/alternatives/javah -> /usr/java/jdk1.6.0_45/bin/javah
    lrwxrwxrwx. 1 root root 31 Sep 16 12:55 /etc/alternatives/javap -> /usr/java/jdk1.6.0_45/bin/javap
    lrwxrwxrwx. 1 root root 36 Sep 16 12:37 /etc/alternatives/javaws -> /usr/java/jdk1.6.0_45/jre/bin/javaws

    2013年9月18日 星期三

    CentOS 的第三方套件庫

    感謝洲大 (Kenduest Lee) 告知的資訊,在 CentOS 裡可以將 DAG 及 EPEL 的倉儲匯入,這樣就會有很多的 package 可以用。

    DAG

    http://wiki.centos.org/ 上也能找到《安裝 RPMforge》這個頁面,根據 Wiki 上的說明,由 Dag 及其他開發人員維護的 RPMforge,為 CentOS 提供超過 5000 個套件。而在《可供 CentOS 使用的軟件庫》則說明了 RPMforge 有時也被稱為 「DAG 軟件庫」。

    要使用 DAG 庫非常容易,只要安裝 rpmforge-release 這個套件就可以了。以 64 位元的 CentOS 6.4 為例,執行以下幾個指令即可完成:

    $ wget -c http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
    $ sudo rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
    $ sudo rpm -K rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
    $ sudo rpm -i rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

    EPEL

    EPEL (Extra Packages for Enterprise Linux) 是為 EL5 及 EL6 重新編譯的 Fedora 套件,在 http://fedoraproject.org/wiki/EPEL 這個頁面可以查看更多資訊。

    要使用 EPEL 庫的方法也很簡單,根據 http://fedoraproject.org/wiki/EPEL 這個頁面的說明,只要安裝 epel-release 這個套件就可以了。也可以參閱《How to Enable EPEL Repository on CentOS for Yum Package Management》這篇文章的說明。

    以 64 位元的 CentOS 6.4 為例,步驟如下:

    $ wget -c http://mirror01.idc.hinet.net/EPEL/6/i386/epel-release-6-8.noarch.rpm
    $ sudo rpm --import https://fedoraproject.org/static/0608B895.txt
    $ sudo rpm -K epel-release-6-8.noarch.rpm
    $ sudo rpm -i epel-release-6-8.noarch.rpm

    如果不想繼續使用 DAG 及 EPEL 的來源,只要分別移除 rpmforge-releaseepel-release 就可以了。

    延伸閱讀:

    2013年9月10日 星期二

    安裝 Debian GNU/Linux 7 (Wheezy)

    過去我在部落格上貼過一些 Linux 的安裝記錄,不過對於 Debian GNU/Linux 安裝的部份,似乎就沒有自己整理一些比較連貫的文章。這幾天我將手邊跑 Debian 那台 ThinkPad X61 重新安裝,順便整理了一下安裝的過程。至於本文的擷圖部份,為了方便操作,所以我利用 KVM / libvirt 也裝了一個同樣的 Debian 環境,然後在 Windows 下配合 XshellXming 秀出視窗,再用 PicPick 擷圖。

    Step 1.

    對於安裝 Debian GNU/Linux,我經常會參考這兩篇文章:

    在第一篇文章裡介紹了圖形化的安裝方式 (Graphical install),不過我比較偏好採用文字介面的方式 (Install) 來安裝 Debian GNU/Linux。

    在安裝過程中,我會先安裝 SSH 伺服器和基本的工具 (Standard system utilities):

    這是因為這陣子以來,我習慣將 Debian 作為遠端登入操作的選擇,所以並不特別需要安裝桌面套件。在安裝完基本的系統後,就可以在文字介面登入 Debian 了。

    Step 2.

    當第一次登入 Debian 後,我會執行 su - 指令變成 root 身份,然後執行下面的指令安裝 ufw 及 sudo。

    $ sudo apt-get install ufw sudo

    接著,參考《在 Debian 上使用 ufw 設定防火牆》這篇文章啟用 ufw 並設定防火牆。

    然後,再執行 visudo 指令修改 /etc/sudoers,讓安裝基本系統時建立的使用者帳號能使用 sudo 指令。

    Step 3.

    修改 /etc/apt/sources.list 的內容如下,目前我偏向採用 Stable 的版本,雖然它的軟體不一定是當前的最新版本,但穩定度很高。而我的習慣是將 Debian 當作伺服器來用,所以就選擇這個版本了。

    # stable
    deb http://http.us.debian.org/debian/ stable main contrib non-free
    deb-src http://http.us.debian.org/debian/ stable main contrib non-free
    
    # stable-updates, previously known as 'volatile'
    deb http://http.us.debian.org/debian/ stable-updates main contrib non-free
    deb-src http://http.us.debian.org/debian/ stable-updates main contrib non-free
    
    # security / stable
    deb http://security.debian.org/ stable/updates main contrib non-free
    deb-src http://security.debian.org/ stable/updates main contrib non-free

    Step 4.

    一直以來,我將安裝 Debian GNU/Linux 時需要安裝的套件寫成了腳本,接著只要執行這個腳本就可以將大部份需要的套件全部安裝好。

    #!/bin/bash
    
    # Get information from Debian GNU/Linux
    VERSION=`cat /etc/debian_version`
    ARCH=`uname -a | awk '{print $8}'`
    
    # Get Account's ID
    THIS_ID=`echo $HOME | cut -d '/' -f 3`
    
    echo Hello $THIS_ID, your system is Debian GNU/Linux $VERSION, $ARCH.
    
    PKG_BASIC="xserver-xorg-core xinit"
    PKG_I18N="ttf-arphic-ukai ttf-arphic-uming ttf-kochi-gothic ttf-kochi-mincho ttf-sazanami-gothic ttf-sazanami-mincho ttf-sawarabi-gothic ttf-sawarabi-mincho ttf-wqy-microhei ttf-wqy-zenhei msttcorefonts"
    
    # Development
    PKG_EDITOR="vim ctags cscope global"
    PKG_COMPILER="make gdb gcc build-essential gcc-multilib g++-multilib gdb-multiarch"
    PKG_LIBS="libncurses5-dev libnetpbm10-dev libsdl-dev libesd0-dev zlib1g-dev liblzo2-dev libusb-dev libreadline6-dev binutils-dev libc6-dev linux-libc-dev libx11-dev xorg-dev libpam-dev libxrender-dev libgl1-mesa-dev libgl1-mesa-glx libxml2-dev x11proto-core-dev"
    PKG_UTILITIES="gnupg minicom lrzsz netpbm libtool bison flex doxygen indent fakeroot valgrind gperf zip curl uboot-mkimage tmux binutils ccache intltool mtools alien gawk pngcrush schedtool mingw32 tofrodos python-setuptools python-markdown xsltproc libxml2-utils python-libxml2 genext2fs genisoimage syslinux squashfs-tools"
    PKG_DOCS="pinfo info2man manpages manpages-dev manpages-posix manpages-posix-dev glibc-doc glibc-doc-reference"
    PKG_KERNEL="linux-headers-$(uname -r) kernel-package firmware-linux firmware-linux-free firmware-linux-nonfree"
    PKG_VCTRL="git-core git-cola git-cvs git-svn gitk cvs subversion mercurial mercurial-git"
    PKG_JAVA="openjdk-7-jdk"
    PKG_EXTRA=""
    
    # Service 
    PKG_SERVICE="samba samba-tools libpam-smbpass ssh"
    
    # Packages depond on 32-bit or 64-bit
    case $ARCH in
     "x86_64")
      PKG_ARCH="libc6-dev-i386 lib32ncurses5-dev lib32readline6-dev lib32z-dev binutils-multiarch"
      ;;
     "i686")
      PKG_ARCH=""
      ;;
    esac
    
    # All packages
    PACKAGES="$PKG_BASIC $PKG_I18N $PKG_EDITOR $PKG_COMPILER $PKG_LIBS $PKG_UTILITIES $PKG_DOCS $PKG_KERNEL $PKG_VCTRL $PKG_JAVA $PKG_EXTRA $PKG_SERVICE $PKG_ARCH"
    
    # If running Gnome, you can use DEBIAN_FRONTEND='gnome' to show Gnome's dialog.
    sudo apt-get update
    sudo apt-get -y --force-yes dist-upgrade
    sudo apt-get install -y --force-yes $PACKAGES
    
    echo 'done.'

    Step 5.

    Debian GNU/Linux 7 並沒有收錄 Oracle 的 Java JDK / JRE,因此在安裝時我會先安裝上 OpenJDK 7。但,接著我仍然會再將 Oracle JDK 6 安裝起來。

    首先自 Oracle 的網站找到 JDK 6 的 Linux 版本,由於這裡我安裝的是 64 位元的 Debian,因此下載了 jdk-6u45-linux-x64.bin 這個檔案。

    執行 jdk-6u45-linux-x64.bin 這個檔案,會解壓縮並得到 jdk1.6.0_45 這個目錄,將這個目錄搬移到 /usr/lib/jvm/ 目錄內。

    接著建立 /usr/lib/jvm/.jdk1.6.0_45.jinfo 這個檔案,內容如下:

    name=jdk1.6.0_45
    alias=java-6-oracle
    priority=63
    section=non-free
    
    jre ControlPanel /usr/lib/jvm/jdk1.6.0_45/jre/bin/ControlPanel
    jre java /usr/lib/jvm/jdk1.6.0_45/jre/bin/java
    jre java_vm /usr/lib/jvm/jdk1.6.0_45/jre/bin/java_vm
    jre javaws /usr/lib/jvm/jdk1.6.0_45/jre/bin/javaws
    jre jcontrol /usr/lib/jvm/jdk1.6.0_45/jre/bin/jcontrol
    jre keytool /usr/lib/jvm/jdk1.6.0_45/jre/bin/keytool
    jre policytool /usr/lib/jvm/jdk1.6.0_45/jre/bin/policytool
    jre pack200 /usr/lib/jvm/jdk1.6.0_45/jre/bin/pack200
    jre rmid /usr/lib/jvm/jdk1.6.0_45/jre/bin/rmid
    jre rmiregistry /usr/lib/jvm/jdk1.6.0_45/jre/bin/rmiregistry
    jre unpack200 /usr/lib/jvm/jdk1.6.0_45/jre/bin/unpack200
    jre orbd /usr/lib/jvm/jdk1.6.0_45/jre/bin/orbd
    jre servertool /usr/lib/jvm/jdk1.6.0_45/jre/bin/servertool
    jre tnameserv /usr/lib/jvm/jdk1.6.0_45/jre/bin/tnameserv
    jre jexec /usr/lib/jvm/jdk1.6.0_45/jre/lib/jexec
    jdk appletviewer /usr/lib/jvm/jdk1.6.0_45/bin/appletviewer
    jdk apt /usr/lib/jvm/jdk1.6.0_45/bin/apt
    jdk extcheck /usr/lib/jvm/jdk1.6.0_45/bin/extcheck
    jdk idlj /usr/lib/jvm/jdk1.6.0_45/bin/idlj
    jdk jar /usr/lib/jvm/jdk1.6.0_45/bin/jar
    jdk jarsigner /usr/lib/jvm/jdk1.6.0_45/bin/jarsigner
    jdk javac /usr/lib/jvm/jdk1.6.0_45/bin/javac
    jdk javadoc /usr/lib/jvm/jdk1.6.0_45/bin/javadoc
    jdk javah /usr/lib/jvm/jdk1.6.0_45/bin/javah
    jdk javap /usr/lib/jvm/jdk1.6.0_45/bin/javap
    jdk jconsole /usr/lib/jvm/jdk1.6.0_45/bin/jconsole
    jdk jdb /usr/lib/jvm/jdk1.6.0_45/bin/jdb
    jdk jhat /usr/lib/jvm/jdk1.6.0_45/bin/jhat
    jdk jinfo /usr/lib/jvm/jdk1.6.0_45/bin/jinfo
    jdk jmap /usr/lib/jvm/jdk1.6.0_45/bin/jmap
    jdk jps /usr/lib/jvm/jdk1.6.0_45/bin/jps
    jdk jrunscript /usr/lib/jvm/jdk1.6.0_45/bin/jrunscript
    jdk jsadebugd /usr/lib/jvm/jdk1.6.0_45/bin/jsadebugd
    jdk jstack /usr/lib/jvm/jdk1.6.0_45/bin/jstack
    jdk jstat /usr/lib/jvm/jdk1.6.0_45/bin/jstat
    jdk jstatd /usr/lib/jvm/jdk1.6.0_45/bin/jstatd
    jdk native2ascii /usr/lib/jvm/jdk1.6.0_45/bin/native2ascii
    jdk rmic /usr/lib/jvm/jdk1.6.0_45/bin/rmic
    jdk schemagen /usr/lib/jvm/jdk1.6.0_45/bin/schemagen
    jdk serialver /usr/lib/jvm/jdk1.6.0_45/bin/serialver
    jdk wsgen /usr/lib/jvm/jdk1.6.0_45/bin/wsgen
    jdk wsimport /usr/lib/jvm/jdk1.6.0_45/bin/wsimport
    jdk xjc /usr/lib/jvm/jdk1.6.0_45/bin/xjc
    plugin xulrunner-1.9-javaplugin.so /usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so
    plugin firefox-javaplugin.so /usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so
    plugin iceape-javaplugin.so /usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so
    plugin iceweasel-javaplugin.so /usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so
    plugin mozilla-javaplugin.so /usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so
    plugin midbrowser-javaplugin.so /usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so
    plugin xulrunner-javaplugin.so /usr/lib/jvm/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so

    再建立 /usr/lib/jvm/debian-orcale-jdk6-alternatives.sh 這個檔案,內容如下:

    #!/bin/bash
    # "Register JDK7 for update-alternatives Script in Debian Way"
    # Based on 1. codeslinger's "install_java7_alternatives" from https://gist.github.com/445930
    #          2. oracle-java6-plugin.deb postint script (for plugin)
    # Modified by Cheng-Wei Chien<e.cwchien@gmail.com>, 2011-07-30
    # ------------------------------------------------------------------------------
    # Note:  This script works on x86 Debian GNU/Linux.
    #        If you use other arch or distro, you may have to modify some parameters.
    #
    # Usage: 1. Extract jdk7 tar.gz to, for example, /usr/lib/jvm/java-7-oracle-1.7.0,
    #           create a symbolic link /usr/lib/jvm/java-7-oracle to it.
    #        2. Download java-7-oracle.jinfo from https://gist.github.com/1114515,
    #           move it to /usr/lib/jvm/.java-7-oracle.jinfo, do some modification if necessary.
    #        3. Run this script with sudo
    #        4. sudo update-java-alternatives -s java-7-oracle
    #        5. Have fun with jdk7!
    #
    # Trouble Shooting: If something goes wrong,
    #        1. Uncomment "remove" commands and comment "install" commands.
    #        2. Run this script again to rollback.
    #        3. Fix what causes the problem, maybe typo or something else.
    #        4. Comment "remove" commands and uncomment "install" commands
    #        5. Run this script to update
    
    # Force the shell to exit immediately if something goes wrong
    set -e
    
    # Follow the Debian's priority rule for java5 = 53, java6 = 63 .. I guess
    priority=63
    
    # Your jdk7 home, in this case, it's /usr/lib/jvm/java-7-oracle-1.7.0
    # But I create a symbolic link /usr/lib/jvm/java-7-oracle to meet Debian's way
    basedir=/usr/lib/jvm/jdk1.6.0_45
    
    # Your man1 dir, you don't need to change this
    mandir=$basedir/man/man1
    
    # Variables from /usr/lib/jvm/.java-6-oracle.jinfo except HtmlConverter (not in jdk7)
    jdk_var='appletviewer apt extcheck idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc'
    jre_var='ControlPanel java java_vm javaws jcontrol keytool pack200 rmid rmiregistry unpack200 orbd servertool tnameserv jexec policytool'
    # browser_var="xulrunner-addons firefox iceape iceweasel mozilla midbrowser xulrunner"
    browser_var="firefox iceweasel mozilla midbrowser"
    
    # Java plugin path, you don't need to change this
    plugin=$basedir/jre/lib/amd64/libnpjp2.so
    
    # First, gzip man1 files to meet the 1.gz form
    if [ -e $mandir ]; then
      for i in $mandir/*.1; do
        gzip $i
      done
    fi
    
    # Register jdk variables
    for i in $jdk_var; do
      unset slave || true
      if [ -e $mandir/$i.1.gz ]; then
        slave="--slave /usr/share/man/man1/$i.1.gz $i.1.gz $mandir/$i.1.gz"
      fi
      #update-alternatives --remove $i $basedir/bin/$i
      update-alternatives --install /usr/bin/$i $i $basedir/bin/$i $priority $slave
    done
    
    # Register jre variables
    for i in $jre_var; do
      unset slave || true
      if [ -e $mandir/$i.1.gz ]; then
        slave="--slave /usr/share/man/man1/$i.1.gz $i.1.gz $mandir/$i.1.gz"
      fi
      if [ $i = jexec ]; then
        # update-alternatives --remove jexec $basedir/jre/lib/jexec
        update-alternatives --install /usr/bin/jexec jexec $basedir/jre/lib/jexec $priority
      elif [ $i = java ]; then
        # update-alternatives --install /usr/bin/java java $basedir/jre/bin/java $priority $slave --slave /usr/bin/policytool policytool $basedir/jre/bin/policytool
        update-alternatives --install /usr/bin/java java $basedir/jre/bin/java $priority $slave
      else
        # update-alternatives --remove $i $basedir/jre/bin/$i
        update-alternatives --install /usr/bin/$i $i $basedir/jre/bin/$i $priority $slave
      fi
    done
    
    # Register plugins
    for i in $browser_var; do
      if [ $i = xulrunner-addons ]; then
        browser=xulrunner-1.9
      else
        browser=$i
      fi
      mkdir -p /usr/lib/$i/plugins
      #update-alternatives --remove $browser-javaplugin.so $plugin
      update-alternatives --install /usr/lib/$i/plugins/libjavaplugin.so $browser-javaplugin.so $plugin $priority
    done

    然後執行 /usr/lib/jvm/debian-orcale-jdk6-alternatives.sh 將 Oracle JDK 6 安裝到系統裡。

    接著執行這個指令列出系統有那些 JDK:

    $ sudo update-java-alternatives -l

    此時應該能看到稍早安裝的 OpenJDK 7,和剛才安裝的 Oracle JDK 6 了。

    java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
    jdk1.6.0_45 63 /usr/lib/jvm/jdk1.6.0_45

    接著,再執行這個指令將預設的 JDK 改成 Oracle JDK 6 就可以了。

    $ sudo update-java-alternatives -s jdk1.6.0_45

    Step 6.

    接著參考《使用 GitHub 管理 VIM》這篇文章及 https://github.com/yuanfarn/vimrc/blob/master/README.md 的說明,建立 ~/.vimrc 及 ~/.vim 的內容。摘錄指令如下:

    $ git clone https://github.com/yuanfarn/vimrc.git ~/.vim
    $ cd ~/.vim
    $ git submodule init
    $ git submodule update
    $ cd ~ && ln -s ~/.vim/vimrc ~/.vimrc
    $ vim +BundleInstall

    Step 7.

    接著,我會執行以下指令設定 git 的幾項參數:

    $ git config --global user.name "Shau-Hung Hsieh"
    $ git config --global user.email "shauhung -AT- gmail.com"
    $ git config --global color.diff auto
    $ git config --global color.status auto
    $ git config --global color.branch auto
    $ git config --global color.log auto

    Step 8.

    Debian 預設的 Samba 設定裡,每個使用者透過 Samba 對自己的家目錄是「唯讀」的,因此我通常會修改 Samba 的 /etc/samba/smb.conf,讓使用者可以透過 Samba 寫入自己的家目錄。修改前後差異如下:

    --- /etc/samba/smb.conf 2013-09-10 05:59:58.410688535 +0000
    +++ /etc/samba/smb.conf 2013-09-10 06:02:28.674702041 +0000
    @@ -99,7 +99,7 @@
     # in this server for every user accessing the server. See
     # /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
     # in the samba-doc package for details.
    -#   security = user
    +   security = user
    
     # You may wish to use password encryption.  See the section on
     # 'encrypt passwords' in the smb.conf(5) manpage before enabling.
    @@ -247,11 +247,11 @@
    
     # By default, the home directories are exported read-only. Change the
     # next parameter to 'no' if you want to be able to write to them.
    -   read only = yes
    +   read only = no
    
     # File creation mask is set to 0700 for security reasons. If you want to
     # create files with group=rw permissions, set next parameter to 0775.
    -   create mask = 0700
    +   create mask = 0600
    
     # Directory creation mask is set to 0700 for security reasons. If you want to
     # create dirs. with group=rw permissions, set next parameter to 0775.

    基本上,改動的內容以家目錄 (HOME) 的分享為主:

    # "security = user" is always a good idea. This will require a Unix account
    # in this server for every user accessing the server. See
    # /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
    # in the samba-doc package for details.
       security = user
    
    [homes]
       comment = Home Directories
       browseable = no
    
    # By default, the home directories are exported read-only. Change the
    # next parameter to 'no' if you want to be able to write to them.
       read only = no
    
    # File creation mask is set to 0700 for security reasons. If you want to
    # create files with group=rw permissions, set next parameter to 0775.
       create mask = 0600
    
    # Directory creation mask is set to 0700 for security reasons. If you want to
    # create dirs. with group=rw permissions, set next parameter to 0775.
       directory mask = 0700
    
    # By default, \\server\username shares can be connected to by anyone
    # with access to the samba server.
    # The following parameter makes sure that only "username" can connect
    # to \\server\username
    # This might need tweaking when using external authentication schemes
       valid users = %S

    Step 9.

    安裝到這裡,我已經擁有一個很好用的 Debian GNU/Linux 環境了。如同本文一開始所說的,我習慣以遠端登入的方式來操作,所以並沒有安裝 X 視窗 (X Window System)。不過,在我的腳本裡確實安裝了 X 視窗的基本套件 (xserver-xorg-core 與 xinit) 和幾個字型的套件。

    如果需要在本機前面操作,且需要視窗介面時,目前 Debian GNU/Linux 已收錄了 Gnome 3,只要執行這個指令安裝基本的 Gnome 套件:

    sudo apt-get install gnome-core

    或是執行這個指令安裝更完整的 Gnome 桌面套件:

    sudo apt-get install gnome

    下圖就是安裝了 Gnome 的樣子:

    如果只是偶爾需要在主機前使用少數圖形化的軟體,又不想安裝一整個的 Gnome 桌面,那麼還有一個更簡單的方式。在之前的腳本裡已經安裝了基本的 X 視窗套件 (xserver-xorg-core 與 xinit),因此只要再安裝像 FVWM 這類比較簡捷的視窗管理程式:

    $ sudo apt-get install fvwm

    然後,參考 https://wiki.debian.org/ 上的 XorgXinitrc 兩個詞目的說明,執行 Xorg -configure 指令建立 Xorg 的設定檔 /etc/X11/xorg.conf,接著在使用者的家目錄裡建立 ~/.xinitrc 這個檔案,內容如下:

    # ~/.xinitrc
    # This file is sourced when running startx and 
    #    other programs which call xinit
    # As in all Bash/sh scripts lines starting with 
    #    '#' are comments
    
    # Set background to your favorite pic
    xsetbg -fullscreen /morphix/background.png &
    
    # Start a XTerm
    /usr/bin/X11/xterm &
    
    # Start the systems window manager.
    # See WindowManagers for other choices.
    exec /etc/alternatives/x-window-manager
    
    # To run Gnome instead of system default, place a 
    # '#' before the previous line and uncomment the 
    # next line.
    # exec gnome-session

    這麼一來,使用者可以在文字介面登入後,執行 startx 指令進入 X 視窗。就像下面這張圖一樣。

    註:我實際在 KVM 及 VMware 下安裝 Debian GNU/Linux 與 FVWM,似乎可以不用理會 /etc/X11/xorg.conf 這個設定檔。

    延伸閱讀:

    1. 在 Debian 上使用 ufw 設定防火牆
    2. 製作 Debian 的 USB 開機碟
    3. 升級至 Linux Mint 15 (Olivia)
    4. 在 Debian 使用 KVM / libvirt 的虛擬化系統
    5. 在 Linux Mint 14 安裝 Oracle JDK 6
    6. 在 OpenSUSE 12.2 安裝 Oracle JDK 6
    7. 如何安裝 Linux Mint 14
    8. 在 Debian GNU/Linux 安裝 Gnome
    9. 安裝 Debian GNU/Linux
    10. 在 Ubuntu 12.04 安裝 JDK 6 (最終版)
    11. 在 Ubuntu 12.04 安裝 JDK 6
    12. 讓 Ubuntu 12.04 的 ibus 倉頡五代輸入法預設使用繁體語系
    13. 在 OpenSUSE 12.1 安裝 Sun JDK 6
    14. Debian GNU/Linux 安裝記錄
    15. Ubuntu 10.10 安裝記錄
    16. Ubuntu 10.04 LTS 安裝記錄
    17. 在 Ubuntu 10.04 裡安裝 Sun JDK
    18. Ubuntu 9.10 安裝記錄
    19. Samba on Ubuntu 9.04
    20. Debian (testing) on VMware Workstation 6.0.5
    21. Debian 4.0 安裝記錄
    22. Ubuntu Linux 安裝筆記

    2013年9月3日 星期二

    使用 PhotoScape 製作活動記錄或花絮合輯

    這陣子以來,我喜歡將一些記錄性質或花絮的相片挑選整理後,合併排列成一張新的圖檔,這樣要發表到 Google+ 或 Facebook 時,也比一張一張發表張貼有意思多了。合併的結果看起來就像這樣:

    所以,我的 Facebook 塗鴉牆上會有很多這樣合併的花絮圖檔,看起來一整個就像個很棒的相片牆:

    在這裡,我要介紹一下用來合併相片的軟體:PhotoScape

    在合併相片之前,首先要準備好相片,你可以使用習慣的軟體先將相片後製,我一般的習慣會先用 ViewNX 2Capture NX 2 挑選相片並稍微調過亮度對比。

    接著,將這些相片轉成 JPG 檔,然後就可以使用 PhotoScape 來合併成新的圖檔了。

    打開 PhotoScape,選擇「版型」這項:

    PhotoScape 會記憶上一次使用的版型,在視窗的右邊有很多不同的排列方式,你可以依照相片張數及喜好選擇一個排列:

    接在,在視窗右上方找到「大小」這項,一般來說,你會看到 PhotoScape 在這裡顯示的大小為 400X400,這是很小張的圖片,所以我習慣會將它改成自訂大小:

    按下「大小」右側的按鈕,然後選擇「指定版型大小」,這時可以自訂圖檔的長寬。通常我會將長度指定為 4800;而寬度則視情況而定,例如這裡我將寬度指定為 3200。

    接著就可以開始排列相片了:

    排列完成後,在視窗的右上方有一個「切換到相片編修」的按鈕,按下它就可以到編修的畫面:

    在相片編修的畫面,你可以調整亮度、對比,也可以使用 PhotoScpae 提供的濾鏡。通常,我會在這裡使用濾鏡稍作調整,主要目的是讓全部的相片看起來色調相近一些。最後,也可以加上邊框,然後就完成了。