2012年11月7日 星期三

[Facebook][查 uid]

因為在玩的遊戲出了些問題,需要提供 uid 給遊戲管理者進行確認。

但現在 Facebook 通常在 URL 部份只會顯示英文名稱而已,

以往按自己的照片等方法已經沒辦法獲得 uid 這項資訊。

要查到自己的 uid 資訊,可以用 http://graph.facebook.com/ 後接使用者英文名稱。

如 http://graph.facebook.com/ABCD,就會顯示出 ABCD 這位使用者的 uid 等資訊。

2012年10月26日 星期五

[Ubuntu][一些測試]

[1] 在 Directory 中開啟新檔案,即使沒寫入任何內容,一樣會更動到 Directory 的 Last Modified Time。推測是因為編輯器(如 vim)會創建暫存檔(.swp)所以更動到 mtime。

2012年10月17日 星期三

[Ubuntu][Some problems met recently]

[1] Couldn't make x3270 because of "fatal error: X11/Intrinsic.h: No such file or directory"

sudo apt-get install apt-file
sudo apt-file update
apt-file search Intrinsic.h

X11/Intrinsic.h                     ->   libxt-dev
X11/Xaw/Command.h          ->   libxaw7-dev


2012年9月13日 星期四

[Ubuntu][把新硬碟設定成 NTFS 格式&改既有 NTFS partition 的 label]

標題有點怪,我知道 XD

最近新加了顆硬碟作為資料碟,因為電腦中還有 Win7,
希望能用 Windows 也能讀取的格式,所以想把資料碟用成 NTFS。

首先就是要把它格式改成 NTFS。

=================================================================

sudo fdisk /dev/sde
(sde 是新硬碟在我電腦裡的代號,請自行察看新硬碟在自己電腦中的代號)
=================================================================

在 fdisk 中建立 partition,因為我是想用整顆作為一個 partition,所以
就下指令 n 之後選 primary 後 default default 就建好了,情況像是下面:

=================================================================
Command (m for help): n        <---------------這個是我輸入的
Command action
   e   extended
   p   primary partition (1-4)
p                                              <---------------這個是我輸入的
Partition number (1-4): 1        <---------------這個是我輸入的
First cylinder (1-30401, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-30401, default 30401):
Using default value 30401
=================================================================

然後就順利的把 partition 切好了,可以輸入 p 看看狀況。

=================================================================
Command (m for help): p        <---------------這個是我輸入的

Disk /dev/sde: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xee202071

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1       30401   244196001   83  Linux
=================================================================

因為 System 預設是 Linux,所以現在我要把它改成 NTFS,就輸入 t,
然後 Hex code 輸入 7,當然也可以用 L 看有什麼樣的格式可以選,
因為列出來很難排版,所以有興趣的人再自己去看。然後再輸入 p 列出資訊,
已經把 System 改成 NTFS 了。

=================================================================
Command (m for help): t        <---------------這個是我輸入的
Selected partition 1
Hex code (type L to list codes): 7    <------這個是我輸入的
Changed system type of partition 1 to 7 (HPFS/NTFS)

Command (m for help): p        <---------------這個是我輸入的

Disk /dev/sde: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xee202071

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1       30401   244196001    7  HPFS/NTFS
=================================================================

然後完成了嗎?還沒。還沒把資訊寫進去,所以要用 w 把資訊寫入,
才是真正的把硬碟改成 NTFS 的。

=================================================================
Command (m for help): w        <---------------這個是我輸入的
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
=================================================================

然後就是要格式化它啦,這時可以設定 label 給那 partition,像是我用 Data。
格式化的時間有點長,因為要把 zero 寫入整個 partition 中。
這邊也可以設定 Cluster size,有興趣的自己 man。

=================================================================
sudo mkfs.ntfs -L Data /dev/sde1
Cluster size has been automatically set to 4096 bytes.
Initializing device with zeroes:   3%
=================================================================

等到跑到 100% 了,新硬碟就可以用囉,至於 fstab 那些就自己設定吧。
或者像我用 Ubuntu 的 GUI,可以直接在系統列選 Places,中文翻位置吧,
裡面找到新硬碟,點下去就自動 mount 起來了。

另外要改 label 的話,先把那 partition umount,以我這邊的狀況是。

=================================================================
 sudo umount /media/Data
=================================================================

然後用 ntfslabel 改 label,像是改成 Fun。

=================================================================
sudo ntfslabel /dev/sde1 Fun
=================================================================

這樣就把 label 改掉了,然後再重新 mount 起來硬碟又可以用了。

2012年7月17日 星期二

[Latex][固定表格]

有時我們會希望能夠把表格固定在一段文章內容的後面,

不希望由 Latex 來幫我們做動態調整。

這時候就可以用這方法:

\usepackage{float}

然後在宣告表格時

\begin{table}[H]

這樣就可以讓表格固定在你編輯的位置。

2012年7月5日 星期四

[Linux][Ubuntu][一些好用小招]

(1)
在 CLI 時,要達到 clear 這指令的效用,可以直接用 ctrl + l。

(2)
要讓 shell 自動幫你補完(之前有輸入過的)指令時,可以用 ctrl + r。

(3)
與 (2) 類似的功能,是在 .bashrc 裡面 加上以下兩行:

bind '"\x1b\x5b\x41":history-search-backward'
bind '"\x1b\x5b\x42":history-search-forward'
然後就可以藉由輸入部份指令後按上下鍵來搜尋之前有輸入過的指令並補完。

(4)
在 GUI 時,可以用 ctrl + alt + t 叫出 Terminal,default pwd 為使用者
的 home directory。

(5)
要取一個檔案的 basename 可以用 basename 這條指令。
像是 info coreutils 'tee invocation' 中有給兩個範例:

basename include/stdio.h .h 會得到 stdio 這個結果,也就是說它會取到
路徑的最尾端的 filename,然後依照 argv[2] 所給的 SUFFIX 將其於
filename 中消除並輸出結果。不過測試結果看起來沒支援 *。

(6)
與 basename 相對的是 dirname。

直接舉例,dirname /usr/bin/sort 會得出 /usr/bin 這個結果。

2012年7月1日 星期日

[Linux][Ubuntu][gnome-open and xdg-open]

有時我用 command-line 切到某個 directory 底下時,想要開啟 gui 介面。

因為 gui 介面在整理東西時偶爾比較方便。

這時 gnome-open 這個指令就派上用場了。

像是

zqpm@MyMachine:~$gnome-open .

就會打開 zqpm 家目錄的資料夾圖形介面。

It's interesting.

或許改天我可以 bind 一個 key 給它,這樣就不用打一串指令了。

我還是會覺得 gnome-open 很長的,當我很懶時。(攤手)

xdg-open 也可以達到同樣的功能。

不過我沒有 KDE 介面(我是用 GNOME)。

所以不確定 xdg-open 可否在 KDE 時可以達到一樣的效果。(在 GNOME 上可)

Reference:
Domon

2012年6月14日 星期四

[Linux][Ubuntu][Xfig][Special Text]

Xfig 在 export 成 PDF/Latex 時可以將圖片上的字全部放到輸出的 Latex 檔案中。

這樣可以在被 input 進其他的 pdf 時,使圖跟文章內容的文字同款。

方法是在 Xfig 的操作介面左下角有個 "Edit",點選它後再將那隻手移到圖片上的文字處。

點一下,會出現那個字的 "Edit Panel",裡頭有個 "Special Flag"。

將原本的 "Normal" 改成 "Special",按上頭的 "Apply" 再按 "Done",就儲存設定了。

匯出時會看到生成的 PDF 檔中完全沒有文字,那些文字通通在 Latex 檔裡面。

檔名方面,PDF 會以 .pdf 作結尾,而 Latex 檔則是以 .pdf_t 作結尾。

在其他的 Latex 檔中 input 圖片時,舉例而言,input{fig/test.pdf_t} 時。

test.pdf_t 中有 includegraphics{test.pdf},要注意一下路徑的問題。

不然可能會產生編譯錯誤,找不到 test.pdf 這個檔案的情況。

另外如果不想要一個一個字去設定 "Special Flag" 的話,可以在 command line

輸入 "xfig -specialtext",以這個方法來開啟 Xfig,這樣的話 "Special Flag" 的

預設值就是 "Special" 了。

Reference:
子園

2012年4月26日 星期四

[Ubuntu][一些好用軟體]

Brasero
用來燒光碟的。

emesene
用來 msn 的,可以傳離線訊息真是幫大忙了。

KolourPaint
就小畫家啦。

htop
top 的進階版?可以看記憶體的使用程度。

Avidemux
用來剪輯影片的,剛剛才喀喀喀了一部影片 XD

2012年4月23日 星期一

[Latex][chapterbib]

耗了兩天,所以特地寫了篇心得文之類的?

Anyway,有時,像是在寫書時,會想要在各章後放各章的參考文獻,但是一般來說參考文獻都會被放在文件的最後面,如果想要在各章之後 show 出來的話該怎麼做呢?這時就要用 chapterbib 這個 package 了。

底下是我這次所測試出來可以用的例子。

Example/
  |-article.tex
  |-Chap01/
      |-reference.bib
      |-section01.tex
      |-section02.tex
  |-chap01.tex
  |-Chap02/
      |-reference.bib
      |-section01.tex
      |-section02.tex
  |-chap02.tex
  |-Makefile

[article.tex]
\documentclass{book}                   
\usepackage[sectionbib]{chapterbib}
\usepackage{CJKutf8}
\begin{document}
    \begin{CJK*}{UTF8}{bkai}
        \include{chap01} 
        \include{chap02}
    \end{CJK*}
\end{document}

[chap01.tex]
\chapter{Chapter 01}
    \input Chap01/section01.tex
    \input Chap01/section02.tex
    \newpage
    \bibliographystyle{plain}
    \bibliography{Chap01/reference.bib}


[chap02.tex]
\chapter{Chapter 02}
    \input Chap02/section01.tex
    \input Chap02/section02.tex
    \newpage
    \bibliographystyle{plain}
    \bibliography{Chap02/reference.bib}

[Makefile]
all:
    latex article
    bibtex chap01
    bibtex chap02
    latex article
    latex article
    pdflatex article

clean:
    rm -rf *.aux *.bbl *.blg *.dvi *.log *.pdf

如果不加上 sectionbib 的話,就會是在文件最後面才會依章列出所用的參考文獻。

Reference:
http://www.eng.cam.ac.uk/help/tpl/textprocessing/bibliographies.html

2012年4月19日 星期四

[Linux][RAM Info]

Here are some commands for query ram related information.

Q1. How many slots?
A1. sudo dmidecode | grep -P -A5 "Memory\s+Device" | grep Size | grep -v Range

Q2. The maximum capacity supported.
A2. sudo dmidecode | grep -P "Maximum\s+Capacity"

Q3. RAM frequency.
A3. sudo dmidecode | grep -A16 "Memory Device" | grep "Speed"

References:
http://linux.chinaitlab.com/command/837383.html

2012年4月18日 星期三

[Linux][gprof and gcov]

[gprof] performance analysis

flag used: -pg

gcc -pg test.c
./a.out
gprof a.out > test

[gcov] code coverage

flag used: -ftest-coverage

gcc -ftest-coverage test.c
./a.out
gcov test.c

References:
http://blog.superd.org/index.php/2004/11/02/39/
http://codingfreak.blogspot.com/2009/02/gcov-analyzing-code-produced-with-gcc.html

2012年4月17日 星期二

[GCC][Create and Use Shared Library]

This is only the record of the content of the book I read.

gcc -fPIC -c initapi.c
gcc -fPIC -c randapi.c

gcc -shared initapi.o randapi.o -o libmyrand.so

gcc main.c -L. -lmyrand -o main

export LD_LIBRARY_PATH=./

If we wanted to load this shared library dynamically.

cp libmyrand.so /usr/local/lib

2012年3月24日 星期六

[Linux][Ubuntu][Kernel Local Version 比較]

試了兩種方法

http://zqpmmemo.blogspot.com/2012/03/linuxubuntukernel-local-name.html
http://zqpmmemo.blogspot.com/2012/03/linuxubuntuerror-message-after.html

一個是用 make-kpkg 的 --append-to-version。

一種是修改 kernel 裡的 Local Version,且在 compile kernel 的過程中,修改 debian/control 這檔案裡的資訊使兩者一致。

兩者都能達到同樣的結果,不過就手續上而言的確後者比較麻煩一些。

[Linux][Ubuntu][Kernel Local Name]

因為直接改 Kernel 裡的 Local Name 需要一些方法才能正確的編譯。

所以乾脆直接利用 make-kpkg 的 flag 來改比較方便,就是「--append-to-version」。

指令如下:

sudo fakeroot make-kpkg --initrd --append-to-version=-zqpm kernel_image kernel_headers

編出來的檔案在我這邊的情形是

linux-headers-3.1.10-zqpm_3.1.10-zqpm-10.00.Custom_amd64.deb
linux-image-3.1.10-zqpm_3.1.10-zqpm-10.00.Custom_amd64.deb

安裝好後在 grub.cfg 呈現的樣子是

menuentry 'Ubuntu, with Linux 3.1.10-zqpm' --class ubuntu --class gnu-linux --class gnu --class os

理論上來說,重開機後選它登入後 uname -a 顯示類似

Linux 3.1.10-zqpm

[Linux][Ubuntu][Error Message After Compiling]

在 make menuconfig 後於 local version 填入了 zqpm,但在 compile 之後會出現類似

"dpkg-gencontrol: error: package linux-image-3.1.10zqpm not in control info"

這樣的 error message。

原因是在 kernel 資料夾底下 debian/control 這檔案裡的資料與 target file 不符合。

比較直接的解決方法是進行

http://zqpmmemo.blogspot.com/2012/03/linuxubuntucompile-new-kernel.html

的第五步,sudo make-kpkg clean

然後再一次進行第六步。

第六步 Enter 按下去執行指令後立刻開另一個 Terminal。

修改 debian/control 這個檔案。

把開頭為 linux-source、linux-image、linux-header 的字串都加上自己 local version 設定的字串。

以我的狀況就是

linux-source-3.1.10 -> linux-source-3.1.10zqpm
linux-image-3.1.10 -> linux-image-3.1.10zqpm
linux-headers-3.1.10 -> linux-headers-3.1.10zqpm

阿,linux-image-3.1.10-dbg 不用改。

改好後存檔,另一邊的 compile 就讓它自己繼續跑下去吧~

大概這樣子就不會出現 error 了。

方法我自己有試過了,也順利編出在下一步需要用的兩個 .deb 檔了。

不過非人工的作法我還沒找到,似乎跟 make-kpkg 有關。

Reference:
http://ubuntuforums.org/showpost.php?p=9638461&postcount=1488

2012年3月21日 星期三

[Linux][Latex][右上角的 (R) 或是 TM]

ABC 後加上 \textsuperscript{\texttrademark} 這樣會在 ABC 的右上角出現代表商標的 TM。

將 \texttrademark 改成 \textregistered 則會在右上角出現代表註冊的圈圈內的 R。

2012年3月20日 星期二

[Linux][Ubuntu][調整單一 Terminal 內字體的大小]

剛剛無意間試出來的。

在一個 Terminal 下,按 「Ctrl」 + 「-」 可以縮小該 Terminal 的字體。

不過那個 <-> 是在英文字母區塊的那個 「-」,上頭的注音符號是ㄦ。

按數字鍵的不會作用。

而要放大該 Terminal 的字體,就是按 「Ctrl」 + 「Shift」 + 「=」。

說到底,「Shift」 + 「=」 也就等於是 「+」 了。

不過在這邊為了能清楚知道按鍵要怎麼按,所以還是採用比較麻煩的敘說方式。

同樣的,按數字區的 「+」 並不會作用。

2012年3月15日 星期四

[Linux][Ubuntu][Compile a New Kernel]

此處以 3.0.24 做範例,我的 Ubuntu 版本是 10.04。

裡邊有些所需要的 package 自行安裝,反正系統會提醒的。

============================================================

從 http://www.kernel.org/ 下載 linux-3.0.24.tar.bz2 到 /usr/src。

1) sudo tar zxvf linux-3.0.24.tar.bz2

2) sudo cd linux-3.0.24

3) sudo make menuconfig
(有出現錯誤的話看這裡:
http://zqpmmemo.blogspot.com/2012/02/linuxubuntumake-menuconfig-requires.html)

4) 挑選自己想要編的項目,可以以核心 (*) 的型式或是模組 (M) 的型式,完成後退出並儲存 configure。
(會有個 .config 檔產生在同目錄下)

5) sudo make-kpkg clean
(optional)
(沒有 make-kpkg 的話就 sudo apt-get install kernel-package 吧!)

6) sudo fakeroot make-kpkg --initrd --revision=3.0.24 kernel_image kernel_headers
(其實 = 後面可以加上自己想要的編號或文字,只是我習慣直接寫上版本號)
(不過就是會產生等下有點有趣的狀況就是了)
(這個時間會有點長)

7) cd ../
(會產生兩個開頭為 linux- 的 .deb 檔案)
(以我為例的話是 linux-headers-3.0.22_3.0.22_amd64.deb 和 linux-image-3.0.22_3.0.22_amd64.deb)

8) sudo dpkg -i linux-*.deb

9) sudo vi /boot/grub/grub.cfg
(雖然理論上步驟八就會自動幫忙寫入,不過還是自己檢查一下吧)

10) sudo reboot
(沒問題的話就可以 reboot 選自己剛編好的 kernel 開機囉)

Reference:
http://blog.xuite.net/robert1030tw/blog/19639294-Debian%2FUbuntu+%E7%B7%A8%E8%AD%AF%E6%A0%B8%E5%BF%83

[Linux][Ubuntu][Change NIC Priority via Metric Value]

說實在的不算是設定 priority,只是算讓系統知道說這條路比較好而已。

所以送封包出去時會優先走這條路。

情況是這樣的,我有兩張網卡,兩張各有各的 IP,兩張都可以連線到外邊。

但我想要以 eth0 作為主要連出去的對象。

所以我改了 /etc/network/interfaces 裡 eth0 跟 eth1 的 metric 值。

直接在 eth0 跟 eth1 網路設定中加上「metric 」就好了。

範例如下:

auto eth0
iface eth0 inet static
address 192.168.77.88
netmask 255.255.255.0
gateway 192.168.77.254
metric 1

metric 的值愈小代表路徑愈佳,而我 eth1 的 metric 是設 9999。(印象中是極限了)

所以之後封包船送都會以 eth0 為優先。

2012年3月12日 星期一

[Linux][Ubuntu][Update GCC Version]

偶爾會碰到一些 GCC 4.6 版本的要求,雖然用舊有的 4.4.3 也可以做。

不過這次就趁勢升級一下好了。

由 sudo apt-get install 並沒辦法升級,所以要先

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.6
sudo apt-get install g++-4.6

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 20

這兩道指令最後的「20」應該是 priority,但為什麼給定 20,目前還不清楚。

當 update-alternatives 的選擇是設定為 auto 時,會去看 priority 的值,值越大越優先。

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

最後這兩道指令都會出現「There is only one alternative in link group gcc: /usr/bin/gcc-4.6」。

所以應該是可打可不打吧。

所有指令完成後就可以發現自己的「gcc --version」和「g++ --version」顯示出「現在最新」的 4.6.2 囉。

Reference:
http://superuser.com/questions/310809/how-can-i-update-gcc-to-the-latest-version-in-ubuntu-10-04

2012年3月11日 星期日

[Linux][Ubuntu][Skype P2P connection failed]

本來還想說是不是上游端有設備擋住了。

後來嘗試著把 ~/.Skype/shared.xml 砍掉再重新啟動 Skype。

就可以順利連線了,真是奇也怪哉。

Reference:
http://askubuntu.com/questions/18537/how-can-i-fix-the-login-error-p2p-connect-failed-on-skype

2012年2月29日 星期三

[Linux][Ubuntu]['make menuconfig' requires the ncurses libraries]

It said "Install ncurses (ncurses-devel) and try again.", but I couldn't find this

package on Ubuntu.

After searching, there's a package named "libnurses5-dev" could help, so just

"sudo apt-get install libncurses5-dev".

Then "make menuconfig" works.

2012年2月27日 星期一

[Linux][Ubuntu][Free Memory]

幾天前,心血來潮下了 free 來看看 memory usage,意外發現可利用的 memory

剩不到 1/4,明明我也沒用的特別兇猛阿。(雖然 Fx 的確可能會吃的很兇啦....)

但用 ps aux 來看,自己加一加卻發現全體 processes 沒有用到那麼大量的記憶體。

那到底是怎麼回事呢??

再仔細看了一下 free show 出的內容,怎麼 cached 那一塊特別的大!?

該不會是都被 cache 用走了吧 Orz

看了 Reference 的部份才發現 Linux 2.6.16 後的版本在顯示上並不會說有

釋放 memory 的動作,不過實際上當有需要時還是會壓榨出來使用。

若想強勢清除 cache 以達到 free memory 的動作,用以下的指令:

sudo su
echo 3 > /proc/sys/vm/drop_caches

sudo su 就事變身為 root,我有試過

sudo echo 3 > /proc/sys/vm/drop_caches

結果是 permission denied....

所以還是先變身為 root 再執行動作吧。

/proc/sys/vm/drop_caches 裡頭原本的值是 0。

不同的值所代表的意義如下:

0 # default
1 # free pagecache
2 # free dentries, inodes
3 # free pagecache, dentries, inodes

(奇怪,我沒有 drop_caches 的 man page....)

現在把值改為 3,再觀察一陣子看看。

Reference:
http://gwokae.mewggle.com/wordpress/index.php/archives/544
ftp://ftp.alaska.edu/pub/sois/man/drop_caches.html

2012年2月20日 星期一

[Linix][Ubuntu][Windows XP on KVM]

來做個空的 12GB img file。
    dd if=/dev/zero of=/home/user/xp.img bs=1024k count=12000

接下來就是直接灌了。
    kvm -m 1024 -cdrom /home/user/winxp.iso -boot d /home/user/xp.img

    -m 的部份是設定 memory (MB),每次啟動時可以自行調整,
    有次想說用 512 結果 XP 慢到無法忍受。

安裝 XP 的步驟就跟平常一樣。

xp.img 製作好了之後,可以直接用下列指令以該 image 開啟。
    kvm -m 1024 -hda /home/user/xp.img

References:
http://www.howtoforge.com/virtualization-with-kvm-on-ubuntu-10.10
http://www.howtoforge.com/installing-windows-xp-as-a-kvm-guest-on-ubuntu-8.10-desktop

2012年2月9日 星期四

[Linux][Ubuntu][Apache2 change Document Root]

Apache2 把設定檔分散的挺細的。

不過光看檔案及資料夾名稱,還是能猜出它們的用途。

而在 Apache2 要更改 Document Root 的話。

有兩種作法,一種是直接改 sites-available/default 裡面的資訊,

把預設的 /var/www 改成自己想要指定的路徑,然後重新啟動 apache2。

另一種就是複製一份 default 自己改 XD

後者的作法需要 a2dissite default 這個指令來 disalbe default。

然後再用 a2ensite 來指定你希望 enable 的 site。

然後再 restart apache2 就 OK 了。

=========================================================
作法二指令化:

在此假設我要把 Document Root 改成 /var/www/MySite,
並且指定在 Apache2 中的代號是 mysite。

sudo mkdir /var/www/MySite
cd /etc/apache2/sites-available
sudo cp default mysite
sudo vi mysite
Change all the "/var/www" to "/var/www/MySite". <--- 這是動作不是指令。
sudo a2dissite default
sudo a2ensite mysite
sudo /etc/init.d/apache2/restart

此時你會發現在 /etc/apache2/sites-enable 中會產生個 mysite 的 symbol link。

搞定。
=========================================================
Reference:
http://www.ajopaul.com/2010/05/01/ubuntu-apache2-change-default-documentroot-varwww/

2012年2月6日 星期一

[Linux][Script][Shell Programming 333 個應用範例技巧大全集 Memo]

編號是我自己編的,跟書內範例的次序不同。

001. 「echo ${PIPESTATUS[1]}」可得到 pipe 中第二個指令的執行回傳值,
     以判斷是否執行成功。

002. 「nohup command &」可以使得 command 在背景執行時即使使用者登出或
     終端被關閉依然繼續執行。

003. 「eval $variable」可將 $variable 的值當作指令執行。

004. 「ls | tee list.txt | sort -r > list_rev.txt」中,tee 將 
     stdio 得出的 ls stdout 寫到 list.txt 中,同時也寫到 tee 自己的
     stdout。在此例中 list.txt 與 list_rev.txt 會是兩份資料次序相反
     的檔案。

005. 「command > filename 2&1」,將 command stdout 跟 stderr 的訊
     息都寫到 filename 中。更精確來說,是將 stderr 的 message 
     redirect 到 stdout。

006. 在 script 中 self-defined 的 function 可以用 unset 來取消,
     不過真的有人會要這麼做嗎....

007. Argument $1, $2..等的個數,可用 $# 來顯示。

008. Shell 中沒有絕對的 Global Variable.

009. 可以用「shift 」來將 arguments 的 index 移動到第 
     number 個 argument 處。

010. Arguments 為「a b c」時,若是「"$*"」的話是「"a b c"」,
     而「"$@"」的話則是「"a" "b" "c"」。

011. 「${var_name:=default_value}」,var_name 未定義或是空值時會將 
     default_value 設定為它的值。

012. 「$(var_name:?message}」,var_name 未被定義時,會顯示 message 
     並且中止 script.

013. 「readonly var_name」,之後 var_name 這個變數無法被改變。

014. (1) 用「"..."」,字串整體會被當成個單字處理,會進行變數展開及指令替換
         等展開動作。
     (2) 用「'...'」,字串整體會被當成個單字處理,但不會進行展開動作。
     (3) 直接寫入,(1) 的情況加上 tilde expansion 和路徑名稱的展開。

015. 「set -- $var」可以將 $var 這個字串分割成多個單字,
     結果可用 $1 到 $9 來參照。

016. 「substr=`echo "$str" | cut -c${start}-${end}」可取出
     字串 $str 中第 start 到 end 的結果存到 substr.

017. 「echo "$text" | tr 'a-z' 'A-Z'」,將 $text 中的小寫轉成大寫。

018. 「echo "${#text}」,顯示 $text 這一字串的長度。

019. 「random=$(((RANDOM % 10) + 1))」會產生 1~10 的亂數。

020. 「if tty -s; then」,判斷是否是在終端執行。

021. 「basename dir1/dir2/sample.txt .txt」會輸出 sample,看起來
     像是只得到檔名而消除了副檔名。

022. 「bname=`expr "$1" : '\(.*\)\.'`」消除副檔名;
     「ext=`expr "$1" : '.*\(\..*\)'`」取得副檔名。

023. 消除像是 -test 這類的檔案,可以用「rm -- '-test'」。

024. 「: >file_name」會得到個內容為空的 file_name 檔案。
     若使用 touch 的話,當檔案本身已存在時,僅會更改更新日期,而內容不變。

025. 「mkdir -p dir1/dir2/dir3」,當 dir2 跟 dir3 不存在時不會出現
     錯誤,而是會自行幫你產生 dir2 跟 dir3.

026. 在 cp 時加上 "-p",可以保留所有權、存取權、更新日期等資訊,
     但 symbolic link 在複製過去時會變成普通的檔案。

027. 「dd if=/dev/zero of=bigimage bs=1024 count=1024」會製作一
     個 1024x1024 (1M) 大小,名稱為 bigimage 的空檔案。

028. getopts:用來拆參數列。

029. 「echo -n "message"」,輸出 message 後不會換行。

030. 「stty raw」,終端會被設定在 raw 模式,此時就會在每次輸入一個字時
     把資料傳給程式。若想恢復成原本的模式,則用「stty -raw」。

031. stty 的「echo」「-echo」是設定是否要把輸入的文字顯示在畫面上。

032. 「stty raw -echo
      char=`dd bs=1 count=1 2>/dev/null`
      stty -raw echo
      echo "Key pressed: '$char'"」
     程式執行時,按一個鍵不用按 Enter,資料就會被送入程式進行處理。

033. 「stty sane」可以重置終端。

034. 「pgrep '^sshd$'」會顯示執行中的一個名稱叫作 sshd 的行程的 pid 一覽表。

035. 優先順位的數值越大,形程執行的優先順位越低。

036. 「trap '' INT」中,「''」是代表預執行的處理部份是空值,所以在程式執行過程
     中下 ctrl+c 並不會被受理。

037. 「tar cf -path | gzip -c | ssh host "cat > filename.tar.gz」,
     似乎挺有趣的,改天再來試試。

2012年1月31日 星期二

[Linux][Ubuntu][Expect]

紀錄我在使用 Exepct 時的種種。

Expect 的位置,/usr/bin/expect

輸入 control+c --> send \003

2012年1月30日 星期一

[Linux][Ubuntu][Japanese content PDF with evince]

雖然知道 evince 沒有對全部的編碼進行預設安裝,不過沒想到連日文也沒有。

看了下錯誤訊息是 "Error: Missing language pack for 'Adobe-Japan1' mapping"

好吧,看來還是跟 Adobe 有些關係。

沒關係,就裝吧。

sudo aptget install poppler-data

關於 poppler-data 的描述是,"Encoding data for the poppler PDF rendering library"。

裝了之後就可以正常瀏覽日文內容的 PDF 文件了。

2012年1月21日 星期六

[Linux][Ubuntu][改 eth 編號]

會吃到 ethX (這邊的 X 泛指 eth 的數字) 設定的,有兩個地方。

/etc/network/interfaces -- 這個檔案本來就是在做 IP 設定時會修改到的檔案。

/etc/udev/rules.d/70-presistent-net.rules -- 這個檔案是紀錄網卡的種種資訊。

像是識別的名稱 (eth0, eth1)、MAC Address 等。

因為之前有多拿幾張網卡進行測試,所以 70-presistent-net.rules 記了許多張網卡的資料。

所以在 ifconfig 理會出現 eth0 與 eth3 的狀況。

因此我把 70-presistent-net.rules 這個檔案刪除了之後重開機,讓系統重新建立識別我插在上邊的兩張網卡。

結果 ifconfig 就得到了 eth0 語 eth1 的結果。

事實上也可以直接進行檔案內容的修改,把 eth3 改成 eth1 之類的。

2012年1月14日 星期六

[Linux][Ubuntu][COM1 via Minicom]

$sudo apt-get install minicom

$minicom -s

Choose "Serial port setup"

Change the value of "Serial Device" to "/dev/ttyS0" in order to use COM1.

Set "Bps/Par/Bits" to what you need.

"Hardware Flow Control"...whatever, up to the user.

Then choose "Save setup as dfl", or you have to configure minicom every time you use.

To use minicom, just type as below.

$minicom

After pressing enter key for twice, it will display the login of the hardware such as switch or others.

2012年1月5日 星期四

[Linux][Streaming Related]

NSVTools, NSV Coder GUI

SHOUTcast DNAS

Darwin Streaming Server

QuickTime Streaming Server