2010年12月31日 星期五

Journey lyrics

Lyrics:Corrinne May Music:Corrinne May


It's a long long journey                          (這是一段很長很長的旅程)
Till I know where I'm supposed to be              (直到我找到我的容身之處)
It's a long long journey                          (這是一段很長很長的旅程)
And I don't know if I can believe                 (而我不知道是否能相信)
When shadows fall and block my eyes               (當陰影落下阻擋了我的視線)
I am lost and know that I must hide               (我失敗了並且明白我必須躲藏)
It's a long long journey                          (這是一段很長很長的旅程)
Till I find my way home to you                    (直到我找到回家的路 走向你)
Many days I've spent                              (我曾用盡了許多日子)
Drifting on through empty shores                  (來回漂流在無人的岸邊)
Wondering what's my purpose                       (疑惑著我的目的是什麼)
Wondering how to make me strong                   (疑惑著如何使自己更堅強)
I know I will falter I know I will cry            (我知道我將會變的脆弱 我將會哭泣)
I know you'll be standing by my side              (我知道你將會站在我的身邊)
It's a long long journey                          (這是一段很長很長的旅程)
And I need to be close to you                     (而我需要更向你靠近)
Sometimes it feels no one understands             (有時候這種感覺沒有人能了解)
I don't even know why

I do the things I do                              (我不知道為何我做了這些事)
When pride builds me up till I can't see my soul  (當驕傲像高牆般將我拱起 直到我看不到自己的靈魂)
Will you break down these walls and pull me through?  (你是否會拉著我穿越過這高牆)
Cause It's a long long journey                    (因為這是一段很長很長的旅程)
Till I feel that I am worth the price             (直到我覺得我是值得那代價的)
You paid for me on calvary                        (而你給了我基督受難像)
Beneath those stormy skies                        (在這暴雨狂風的天空下)
When Satan mocks and friends turn to foes         (當魔鬼嘲弄著我 朋友一個個變成敵人)
It feel like everything is out to make me lose control  (感覺就像每件事使我失去控制)
Cause It's a long long journey                    (這是一段很長很長的旅程)
Till I find my way home to you. to you            (直到我找到回家的路 走向你 走向你)

2010年12月22日 星期三

int to string

1. 用C 語言可以用sprintf 來達成

sprintf(str,"%d",val);


2. C++ stringstream 無論是<<或>>,都會自動轉型



string int2str(int &i) 
{
  string s;
  stringstream ss(s);
  ss << i;


  return ss.str();
}

2010年12月14日 星期二

複雜度

O(1) < O(logN) < O(N) < O (NlogN) < O(N^2) < O(N^3) < O(2^N)



如果要計算一個演算法則的複雜度,可以使用演算法則執行時所需要的「執行時間」(Time)或是「記憶體空間」(Space)來進行評估,但是演算法則所需的「記憶體空間」而言,由於是使用虛擬記憶體的技術,提供足夠的記憶體空間,因此一般還是採用「執行時間」來當成估算演算法則複雜度的依據。
複雜度的表示
(1)複雜度上限 (BiG-O)
表示演算法則在最差的情況的複雜度
若 f(N)=O(g(N))成立時,則存在二個常數 C 與 N0 ,使得f(N) <= Cg(N),當N>=N0
(2)複雜度下限(Big Omega)
表示演算法則在最佳的情況的複雜度
若 f(N)=O(g(N))成立時,則存在二個常數 C 與 N0 ,使得f(N) >= Cg(N),當N>=N0
(3)上限與下限為等級相同 (Big Theada)
若 f(N)=O(g(N))成立時,則存在二個常數C1 , C2 與 N0 ,使得C1g(N) <=f(N) <= C2g(N),當N>=N0

2010年11月12日 星期五

RHEL6 announce

Red Hat Sets a New Standard for the Next Generation of Operating Systems (2010.11.10)

With support from industry-leading partners, Red Hat Enterprise Linux 6 enters the market; offers Enterprise IT a firm foundation for a virtualized and cloud-focused future.

期待 CentOS 6 趕快釋出

http://www.redhat.com/about/news/prarchive/2010/new-standard.html

2010年10月27日 星期三

Cloud reference model

Cloud reference model



















[1] Security Guidance for Critical Areas of Focus in Cloud Computing V2.1 from: http://www.cloudsecurityalliance.org/

2010年10月20日 星期三

gmail aliases

Gmail doesn't offer traditional aliases, but you can receive messages sent to your.username+any.alias@gmail.com.

For example, messages sent to jane.doe+notes@gmail.com are delivered to jane.doe@gmail.com.

You can set up filters to automatically direct these messages to Trash, apply a label or star, skip the inbox, or forward to another email account.

2010年10月19日 星期二

GT200 performance

Here are the peak performance numbers for various parts:

                            Single Precision     Double Precision   Bandwidth
· GTX 260-216:   805 GFlop/s           67 GFlop/s             112 GB/s
· GTX 280:          933                        78                           142
· GTX 285:        1062                        89                           159
· GTX 295:        1789                      149                           224
· Tesla C1060:     933                        78                           102

references
http://perspectives.mvdirona.com/2009/03/15/HeterogeneousComputingUsingGPGPUsNVidiaGT200.aspx

2010年10月15日 星期五

2010年10月13日 星期三

CentOS VNC server configure

#修改 /etc/sysconfig/vncserver
#修改 ~/.vnc/xstartup

tighvnc 連線時 IP:terminal:port number

terminal 設為1 表示原root terminal使用, 不設定為由2 開始

附註, Centos6 之後是預設vino 需登入後才能remote loging.

XRDP 設定
http://hpclab.cs.pu.edu.tw/wiki/index.php/Xrdp
http://pulipuli.blogspot.tw/2008/08/windowslinuxxrdpvnc-server.html

references:
http://lerax.sytes.net/LERAX/index.php?pl=593&sid=9695925f
http://blog.weithenn.org/2009/04/centosvnc-vnc-server.html

last update: 2012/07/11

2010年10月6日 星期三

Clean linux ARP cache

一、這樣可以清除單一IP的ARP緩存
arp -d IP

二、清除192.168.0.0網段的所有暫存

for((ip=2;ip<255;ip++));do \ arp -d 192.168.0.$ip &>/dev/null; \
done

三、清除所有ARP

arp -n|awk '/^[1-9]/ {print "arp -d "$1}' | sh


Reference:
http://www.linuxzh.org/Linux/arp-clean.html

2010年10月5日 星期二

PBS Environment Variables

In addition to the above, the following environment
variables will be available to the batch job.

PBS_O_HOST
the name of the host upon which the qsub command is running.

PBS_O_QUEUE
the name of the original queue to which the job was submitted.

PBS_O_WORKDIR
the absolute path of the current working directory of the qsub command.

PBS_ENVIRONMENT
set to PBS_BATCH to indicate the job is a batch job, or
to PBS_INTERACTIVE to indicate the job is a PBS
interactive job, see -I option.

PBS_JOBID
the job identifier assigned to the job by the batch system.

PBS_JOBNAME
the job name supplied by the user.

PBS_NODEFILE
the name of the file contain the list of nodes assigned
to the job (for parallel and cluster systems).

PBS_QUEUE
the name of the queue from which the job is executed.

2010年9月30日 星期四

find + md5sum to check file integrity

find . -name '*' -type f -exec md5sum '{}' >checksum.md5 \; 

2010年9月23日 星期四

makefile 常用的變數

  • makefile 常用的變數

    
          $?     代表需要重建(被修改)的相依性項目。
    
          $@    目前的目標項目名稱。
    
          $<     代表目前的相依性項目。
    
          $*     代表目前的相依性項目,不過不含副檔名。
    
    
    
    1. 例:以 $@ 代表目前的目標 (target) 項目。
      LIBS = -lm 
      OBJS = main.o haha.o sin_value.o cos_value.o 
      CFLAGS = -Wall 
      main: ${OBJS} 
              gcc -o $@ ${OBJS} ${LIBS}  <== 在此 $@ 即 main 。 
      clean: 
              rm -f main ${OBJS}
      


  • makefile 中兩個特別字元,可以加在要執行的命令之前:


    1. - :make 會忽略命令的錯誤。


      1. 如果希望產生一個目錄,但希望忽略錯誤,可能是因為該目錄已經存在。


        -mkdir /usr/local/repository
        

      2. 如果希望清除目標檔案,但希望忽略錯誤,可能是因為該檔案不存在。


        clean:
           -rm main.o 2.o 3.o
        

    2. @ :make 不會在標準輸出上,顯示要執行的命令。

    3. 判斷式 if 起始為符號  @,讓 make 在執行該法則時,停止印出標準輸出的文字。



      install: myapp
         @if [ -d $(INSTDIR) ]; \
          then \
            ...;\
         fi
      
      
Other references:

2010年9月21日 星期二

Version Control: Subversion

## require packages
yum install mod_dav_svn subversion

svnadmin create --fs-type fsfs /usr/local/svn/test
chown -R apache:apache /usr/local/svn/test
svn import Testproj http://localhost/svn/test
svn co http://localhost/svn/test

svn add xxx
svn commit xxx

# Apache subversion configure

   DAV svn
   SVNParentPath /usr/local/svn

   # Limit write permission to list of valid users.
   #
      # Require SSL connection for password protection.
      # SSLRequireSSL

      AuthType Basic
      AuthName "Subversion Repository"
      AuthUserFile /usr/local/svn/passwd
      Require valid-user
   #



#create password file
htpasswd -c /usr/local/svn/passwd test

2010年8月26日 星期四

Ganglia 安裝

最新版可由 http://ganglia.sourceforge.net/ 下載。

## SERVER's require packages:
yum install apr-devel rrdtool-devel libconfuse-devel pcre-devel gd-devel php-gd

## Client's require packages:
yum install libconfuse-devel

其中 rrdtool 可由DAG 下載, 設定可參考 DAG yum repository

## 開始安裝 Ganglia
untar ganglia-3.x.x.tar.gz

GANGLIA_ACK_SYSCONFDIR=1 ./configure --prefix=/opt/ganglia --with-gmetad
make && make install


vimrc 常用設定

set nu "顯示行號
set cursorline "游標整行會標註顏色 (like notepad++)
set ruler " 顯示右下角設定值
set incsearch " 在關鍵字還沒完全輸入完畢前就顯示結果
set tabstop=4 " tab 的字元數
" set expandtab " 用 space 代替 tab

references:
VIM 圖解指令
給程式設計師的Vim入門圖解說明
c9s-VIM
vimdiff


http://www.cnblogs.com/chijianqiang/archive/2012/10/31/vim-2.html
http://blog.roga.tw/2010/01/%E6%88%91%E7%9B%AE%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84-vimrc-%E8%A8%AD%E5%AE%9A%E6%AA%94/
http://blog.vgod.tw/2011/03/19/vimrc/
http://cle.linux.org.tw/~edt1023/vim/node10.html

2010年8月25日 星期三

C++ INT to Binary

void binary(int number) {
 int remainder;

 if(number <= 1) {
  cout << number;
  return;
 }

 remainder = number%2;
 binary(number >> 1);    
 cout << remainder;
}


C++ string

若要在string 後面在連接其他字串的方法有三種, 可是效率卻不同,假設要在字串str 後面加其他字串word

#include
string str, word;

方法1:
str += word;

方法2:
str = str.append(word);

方法3:
str = str + word;



效率比較
方法1 = 方法2 > 方法3

方法3會將字串str + word複製到一個記憶體空間,再將記憶體空間內的值指派到str 內, 所以多花了一倍時間

2010年8月18日 星期三

InfiniBand on Redhat/Centos Linux.

## install necessary packages
yum install ibutils.x86_64 openib.noarch opensm.x86_64 infiniband-diags.x86_64

## client
yum install ibutils.x86_64 openib.noarch infiniband-diags.x86_64

## start services
service openibd start
service opensmd start

## configure interface


DEVICE=ib0     
TYPE=Infiniband     
BOOTPROTO=static     
BROADCAST=192.168.0.255     
IPADDR=192.168.0.1     
NETMASK=255.255.255.0 
NETWORK=192.168.0.0     
ONBOOT=yes



net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.ib0.arp_ignore=1
net.ipv4.conf.ib1.arp_ignore=1

references:
HOWTO: Getting Started with InfiniBand on Redhat/Centos Linux.

2010年8月17日 星期二

How to suspend process

今天有人問我在Linux 下要如何將行程暫停, 這個問題我從來沒想過. 用Google 查了一下發現用kill 就行了.

kill -stop PID  #suspend process
kill -cont PID  #restart process

2010年8月11日 星期三

How to query dependencies from RPM file or packages


rpm -qpR {.rpm-file}
rpm -qR {package-name}

How to list packages in Ubuntu

dpkg --get-selections > packages

References:
http://www.cyberciti.biz/faq/how-do-i-find-what-dependencies-a-rpm-file-has/
http://askubuntu.com/questions/17823/how-to-list-all-installed-packages

2010年7月28日 星期三

swap two variable

For Interger
x ^= y;
y ^= x;
x ^= y;

For Float numberx=x+y;
y=x-y;
x=x-y;





2010年5月26日 星期三

安裝 GLU lib 於CentOS 5.3

    於CentOS 上使用 CUDA 時常會遇到缺少 cannot find -lGLU or cannot find -lXi  和 cannot find -lXmu 的編譯錯誤.

這時只要安裝以下的函式庫就可以解決

yum install freeglut freeglut-devel libXi-devel libXmu-devel

2010年4月27日 星期二

CUDA programming under Compute-Exclusive Mode

How can I tell my programs to choose the available device automatically

It is very simple to make your program automatically choose the right device: DO NOT use cudaSetDevice().
When you don't explicitly specify to use which device, your CUDA program will first try to set up context on device0. If device0 is not available, it will try device1.

What will happen if I choose a device which is being used by another program.

Since all GPU devices have been configured as compute-exclusive mode, the second thread which tries to contact with GPU device will be denied. If you insist using this device by using cudaSetDevice() in your code, you will receive an error when running a CUDA API function.

2010年4月19日 星期一

How to Step TAB for SCREEN

#編輯 .screenrc

vi ~/.screenrc
caption always "%{= bK} %{= bG} [%n]%t @ %H %{-} %= %{= bR} %l %{-} | %{= bG} %Y-%m-%d %{-}"
hardstatus alwayslastline " %-Lw%{= BW}%n%f %t%{-}%+Lw %=| %0c:%s "
 
# Ctrl + left  : last page
# Ctrl + right : next page
bindkey "^[[1;5C" next
bindkey "^[O5C" next
bindkey "^[[C" next
bindkey "^[[1;5D" prev
bindkey "^[O5D" prev
bindkey "^[[D" prev


SCREEN 熱鍵

1) Ctrl+a c:建立一個新分頁
2) Ctrl+a a:分頁往返
3) Ctrl+a [1...9]:切換到第 n 分頁
4) Ctrl+a d:Detach 將工作放到背景執行
5) Ctrl+a S:分割上下畫面
6) Ctrl+a [TAB]:在分割畫面中往返

References:
http://en.gentoo-wiki.com/wiki/Screen
http://blog.cwke.net/2008x06/screen
screen
screen 常用教學筆記

2010年4月8日 星期四

strtok 應用

char* strtok(char* str, const char* delimiters)

用途:將字串切割成tokens


用法:

#include <iostream>
#include <string.h>

using namespace std;

int main()

{
    char c[20] ="Hello World!"
    char *s;
    
    s = strtok(c, " ");

    while(s!= NULL){
      cout >> s >> endl;

      s = strtok(NULL, " ");
    }
}

2010年4月7日 星期三

解決ssh 連線登入問題

3.3 - ssh(1) takes a long time to connect or log in

Large delays (more that 10 seconds) are typically caused a problem with name resolution:
  • Some versions of glibc (notably glibc 2.1 shipped with Red Hat 6.1) can take a long time to resolve "IPv6 or IPv4" addresses from domain names. This can be worked around with by specifying AddressFamily inet option in sshd_config.
  • There may be a DNS lookup problem, either at the client or server. You can use the nslookup command to check this on both client and server by looking up the other end's name and IP address. In addition, on the server look up the name returned by the client's IP-name lookup. You can disable most of the server-side lookups by setting UseDNS no in sshd_config.
解決的方法, 修改 /etc/ssh/sshd_conf 裡面
UseDNS no

小於 3.7.1 版之前的請改
VerifyReverseMapping no

更早之前的如 2.9.9p2 
ReverseMappingCheck no
* Replaced sshd(8)'s VerifyReverseMapping with UseDNS option.
  When UseDNS option is on, reverse hostname lookups are always
  performed.

2010年3月24日 星期三

UNSIGNED INT

unsigned 修飾字是用於正數變數, 在32位元 


int的範圍是 -2147483648~2147483647, 加上修飾字 unsigned int, 其範圍是 0~4294967295.


補充:


  • sbyte 型別代表的是帶正負號的 8 位元整數,且介於 -128  127 的值。
  • byte 型別代表的是不帶正負號的 8 位元整數,且介於 0  255 的值。
  • short 型別代表的是帶正負號的 16 位元整數,且介於 -32768  32767 的值。
  • ushort 型別代表的是不帶正負號的 16 位元整數,且介於 0  65535 的值。
  • int 型別代表的是帶正負號的 32 位元整數,且介於 -2147483648  2147483647 的值。
  • uint 型別代表的是不帶正負號的 32 位元整數,且介於 0  4294967295 的值。
  • long 型別代表的是帶正負號的 64 位元整數,且介於 –9223372036854775808  9223372036854775807 的值。
  • ulong 型別代表的是不帶正負號的 64 位元整數,且介於  18446744073709551615 的值。
  • char 型別代表的是不帶正負號的 16 位元整數,且介於 0  65535 的值。



http://en.wikipedia.org/wiki/Integer_(computer_science)
http://programming.im.ncnu.edu.tw/Chapter5.htm

2010年3月9日 星期二

如何在 opensuse 上安裝套件

因為不常用OpenSuse 常常忘掉安裝套件的指令, 所以把指令寫起來以免日後找不到~~

#搜查資料庫
zypper search gcc

#安裝gcc
zypper install gcc33 gcc33-c++

2010年1月19日 星期二

[caution] nvcc compile

       之前為了測試 cudpp 安裝gcc-3.3, 所以系統上有二套gcc (gcc-3.3 and gcc-4.3), 為了方便測試所以把gcc and g++ link 到 gcc-3.3. 然而之後再寫cuda 程式時發現程式一直有問題, 一直找不到原因, 後來猜想也許是gcc 的問題所以把link 改回gcc-4.3, 程式再執行就正常了. 我在想也許和當時安裝driver 有關

cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  190.29  Mon Aug 24 18:10:29 PDT 2009
GCC version:  gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux)

2010年1月15日 星期五

nvcc compiler-bindir

有時侯在使用CUDA with GCC 會遇見GCC 版本的問題, 例如 CUDPP v1.1 在gcc-4.3 上使用會有問題, 目前的做法就是downgrade gcc 版本, 另一種作法是同時安裝gcc-3.3 and gcc-4.3 然後用nvcc 編譯時加上--compiler-bindir, 作法如下

1. 做個gcc 的連結
ln -s /usr/bin/gcc-3.3 ~/gcc33/gcc
ln -s /usr/bin/g++-3.3 ~/gcc33/g++

2. 用nvcc 做編譯時加上--compiler-bindir
nvcc -DUNIX -O3 -c --use_fast_math -arch sm_13 --compiler-bindir ~/gcc33