2014年1月12日星期日

CentOS 6.3 installing g++4.7 (c++11), openMPI and boost-1.55

G++ 4.7

cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo

yum --enablerepo=testing-1.1-devtools-6 install devtoolset-1.1-gcc devtoolset-1.1-gcc-c++
ln -s /opt/rh/devtoolset-1.1/root/usr/bin/* /usr/local/bin/
hash -r
gcc --version

G++ 4.8 (not working, don't do it)
Edit
/etc/yum.repos.d/DevToolset.repo

[DevToolset-2]
name=RedHat DevToolset v2 $releasever - $basearch
baseurl=http://puias.princeton.edu/data/puias/DevToolset/$releasever/$basearch/
enabled=1
gpgcheck=0

yum install devtoolset-2-gcc-4.8.1 devtoolset-2-gcc-c++-4.8.1
ln -s /opt/rh/devtoolset-2/root/usr/bin/* /usr/local/bin/
hash -r
gcc —version

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

Boost 1.55

yum install libicu-devel python python-devel bzip2-devel zlib-devel

PS if you want to install boost_mpi, install openmpi, and be sure the link is ok (mpic++, mpirun, be sure that EXPORT PATH is ok)

yum install openmpi-devel

wget -c 'http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2/download'
tar xf download
cd boost_1_55_0
./bootstrap.sh
echo "using mpi ;" >> tools/build/v2/user-config.jam
vim project-config.jam (change install path)

Boost Libraries enabling the C++11 compiler support.

(.so)
./b2 toolset=gcc cxxflags=-std=c++0x -j 4
./b2 toolset=gcc cxxflags=-std=c++0x install -j 4

if you want to using static library (.a)
./b2 toolset=gcc cxxflags=-std=c++0x link=static -j 4
./b2 toolset=gcc cxxflags=-std=c++0x link=static install -j 4

ps for refined library 

./b2 —reconfigure


2013年12月28日星期六

php fork,平行 ping (MutiPingScan, multiple ping scanner)

前些天,因為一些需要

所以用php寫了一個 multiple ping scanner

可以平行同時 ping n 個 ip

是利用 php fork,所以要先有安裝 pcntl_fork

廢話不多說,程式碼已經 git上 github了

https://github.com/poi5305/MutiPingScan.git

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

使用方法

1. 先下載,解壓縮,or "git clone https://github.com/poi5305/MutiPingScan.git"

2.執行

if you want to ping 8.8.8.1 ~ 8.8.8.10
usage: php ./MutiPingScan.php 8.8.8 1 10
ps 基本上要是 linux 相關系統,mac 也可以
ps 可以搭配 MutiPortScan 同時使用^^

php fork,平行掃port (MutiPortScan, multiple port scanner)

前些天,因為一些需要

所以用php寫了一個 multiple port scanner (平行連接埠掃瞄器)

可以平行同時掃 n 個 port (n=100)

是利用 php fork,所以要先有安裝 pcntl_fork

廢話不多說,程式碼已經 git上 github了

https://github.com/poi5305/MutiPortScan

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

使用方法

1. 先下載,解壓縮,or "git clone https://github.com/poi5305/MutiPortScan.git"

2.執行

if you want to scan ports 8.8.8.8, 1 to 100
usage: php ./MutiPortScan.php 8.8.8.8 1 100

ps 基本上要是 linux 相關系統,mac 也可以
ps 可以搭配 MutiPingScan 同時使用^^

2013年6月29日星期六

Linux 硬碟讀寫速度測試 (ubuntu 12.04)


寫檔案速度測試 (count 為檔案大小,請慢慢調大噢,小心硬碟爆炸)
time dd if=/dev/zero of=test.dd bs=8k count=10000

讀檔案速度測試 (要先有 test.dd 檔案喔!)
time dd if=test.dd of=/dev/zero bs=8k count=10000

g++4.8, boost 1.5, MPI, tcmolloc, gtest, colorgcc easy install record (簡易安裝全紀錄)




# g++-4.8
sudo apt-get update
sudo apt-get install -y python-software-properties
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y g++ gcc gcc-4.8 g++-4.8
sudo apt-get install build-essential
sudo apt-get install g++ python-dev libzip-dev libbz2-dev
sudo apt-get upgrade
sudo unlink /usr/bin/g++
sudo unlink /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc 


# openmpi
sudo apt-get install -y openmpi-bin openmpi-doc libopenmpi-dev 
#old boost 1.46
sudo apt-get install libboost-all-dev libghc-bzlib-dev


tar xf download
cd boost_1_51_0
./bootstrap.sh
echo "using mpi ;" >> tools/build/v2/user-config.jam
(#vim project-config.jam (change install dir) )

./b2 install



# tcmalloc
apt-get -y install libtcmalloc-minimal0

# gtest
apt-get install cmake make
apt-get install libgtest-dev
cd /tmp
cmake /usr/src/gtest
make
mv libgtest.a /usr/lib/
mv libgtest_main.a /usr/lib/ 

# colorgcc

apt-get install colorgcc

vim /etc/colorgcc/colorgccrc
g++: ccache /usr/bin/g++-4.7
gcc: ccache /usr/bin/gcc-4.7
c++: ccache /usr/bin/c++-4.7
cc:  ccache /usr/bin/cc-4.7

unlink /usr/bin/g++
unlink /usr/bin/gcc
ln -s /usr/bin/colorgcc /usr/bin/g++
ln -s /usr/bin/colorgcc /usr/bin/gcc

Apache allow ssl (https) 開啓 ssl https 功能 (ubuntu test)


以下為在 ubuntu 12.04 的實作

安裝 openssl
sudo apt-get install openssl

開啓模組
sudo a2enmod ssl

產生key
sudo mkdir /etc/apache2/ssl
openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

編輯設定檔
/etc/apache2/sites-enabled/000-default  


  SSLEngine On
  SSLCertificateFile /etc/apache2/ssl/apache.pem
  SSLCertificateKeyFile /etc/apache2/ssl/apache.key
  DocumentRoot /var/www
 
    Options FollowSymLinks
    AllowOverride None
 
 
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
 

重開 apache
service apache2 restart

大功告成

Linux 簡易指令教學整理 (主要做一些文字字串檔處理用) (ubuntu測試)


cut -f1,2,3 bed_file
參數
-d 分割字元
-f 欄位

grep -v '>' fa_file > seq_file
參數
-v 相反
-E 支援正規表達

sort -k1,2 -k2,1 -g -u
參數
-t 分割字元
-k 欄位
-g 數字排序
-u 去除重複

head
參數
-n 行數
-c Bytes

tail
參數
-n 行數
-c Bytes

sed '/3Q/OK/g'
參數
-n 行數, -n '100,200p', 100~200行
-i 直接改變原本的檔案

find /pokemon -name "*.tar"
參數
-delete 刪除找到的檔案
-name 找檔名,可以是正規表達式

join (要先 sort)
join -1 1 -2 1 -a 1 -a 2 -e '-' -o '0,1.1,1.2,1.3,1.4,2.1,2.2,2.3,2.4' file1 file2 
sort -k5 f1 > f3 && sort -k5 f2 > f4 && join -1 5 -2 1 f3 f4 
參數
-a 沒對到的也顯示,以某檔案為主
-v 只顯示沒對到的,以某檔案為主
-1 第一個檔案的欄位
-2 第二的檔案的欄位
-o 設定輸出格式
-e 沒有對到的欄位,用某字串取代 (要有 -o 才有用)

df -ah
看設備資訊

du -sh /pokemon
du -sh /pokemon/*
計算資料夾內涵大小

ls
參數
-a 顯示隱藏檔
-l 條列顯示
-t 利用修改時間排序
-h 隱藏 Bytes

pwd
顯示目前路徑

wc
參數
-c bytes
-l lines

split -a 2 -l 4 -d file prefix.split_ 
-a 分割檔名字數
-l 每幾行切一個檔案
-d 檔案名稱用數字命名

xargs
echo prefix.split_{00..04} | xargs -n 1 head
time echo {0..5} | xargs -n 1 -P 10 sleep


script

#!/usr/bin/sh
string="test"
if [ $string == "test" ] ; then
    echo "in if "
elif [ $strint="test2" ] ; then
    echo "in elif"
else
    echo "in else"
fi

while [ condition ]
do
    程式段落

done

for (( i=1; i<=$nu; i=i+1 ))
do
done

for k in 'a b c d e f g'

for sitenu in $(seq 1 100)

for f in `ls *.fa`

read -p "Please input a number, I will count for 1+2+...+your_input: " nu


expr 計算

test 檢查檔案
參數
-e 檔案或目錄是否存在


awk

常用參數
-F ","
-f awk_script

預設變數

FS 欄位切割符號, (\t)
RS 切割換行符號, (\n)
OFS 輸出欄位符號, (\t)
ORS 輸出換行符號, (\n)
NF 欄位數目
NR 目前是第幾行

執行範例
BEGIN
{
  a=1;
}
{
  a+=1;
  if(a==100)
  {
    print $1;
  }
  else
  {
    for(i=a;i<5 div="" i="">
    {
        print $0" - "i
    }
  }
}
END
{
  print;
}

內建函示
gsub 整行取代
sub 取代一次
split 切割成array
length 取得字串長度
index 取得某字元在某字串第一次出現的位置
substr 用特定長度切割字串
tolower 轉小寫
toupper 轉大寫
atan2
cos
exp
int
log
rand
sin
sqrt

自定 function
            function csplit(s, A, n, i)
            {
              n = length(s)
              for( i = 1 ; i <= n ; i++ ) A[i] = substr(s, i, 1)
              return n
            }



wget 

apt-cache search

apt-get install
如何架設網站在 ubuntu 上
apt-get install apache2 php5 php5-cli libapache2-mod-auth-mysql libapache2-mod-php5
service apache start

top
查看電腦使用資源 cpu, mem
按下字元 
'>' (shift + .) 排序某項
'<' (shift + .) 排序某項
c 顯示 cmd line
u 找 user
i 正在執行
k 移除執行緒
q 跳出


mount
ln
unlink

git 更改預設編輯器

最近很流行的版本控制 git 和 github

但我個人習慣用 vim 來編輯文件

但偏偏 git 預設 commit 的編輯器不是 vim

所以就 google 到的一個方法來改預設編輯器

只要打上這行指令就可以摟!!

git config --global core.editor "vim"

Ubuntu 12.04 doxygen 簡易安裝方法(apt-get install)

安裝 (安裝後面幾個可以產稱圖檔喔)
apt-get install doxygen graphviz graphviz-doc

產生config控制檔案(doxygen.config 名字可以自定)
doxygen -g doxygen.config


產生 doxygen 網頁(設定檔案要先設定好)
doxygen doxygen.config


2013年6月16日星期日

Mac translator 自創及時中英翻譯軟體(Google翻譯)(服務)

呼~很久很久沒有發文了

今天來分享一個個人覺得很好用的Mac翻譯軟體(嘿嘿~自己寫的當然好用@@)

我是把它寫成 Mac 服務,只要安裝後

就可以選擇一個或一串英文(中文也行)

然後按下一個自定快速鍵(就像是 Mac 內建翻譯一樣)

就會利用 Growl (一個泡泡視窗,顯示提示字在螢幕角落) 顯示出來

他的原理是依賴 Mac 服務,可以讀取使用者選取的文字

然後利用 PHP script 自動傳到 Google 翻譯(所以要有網路)

並且接收後,使用 Growl 顯示在螢幕角落

個人是覺得非常方便,呵呵,非常常用,尤其是在看 paper 的時候

而且還可以一次翻譯一整句或一整段

然後我目前把它命名為 Translator...,珍藏許久,希望大家喜歡

================================================
服務名稱:Translator_Andy (中英互相翻譯服務)
撰寫時間:2012/05/12
檔案大小:132KB
下載位置:下載

備註:
須先安裝 Growl (安裝後請關掉重開)
Growl 下載點:http://growl.info/downloads
1.2.2 版本的免費,其他的要錢

使用方法:
下載後應該會自動解壓縮,然後打開服務後,請選擇安裝
這時候大家可以打開
"系統偏好設定" > "鍵盤" > "鍵盤快速鍵" > 左邊選服務
然後右邊找"文字"分類下的 Translator_Andy 打勾
之後可以設定自己喜歡的快速鍵,在這邊我還會搭配 BetterTouchTool (Free)
然後設定手勢,我個人是設定 4 根手指頭點到觸控板就翻譯





















按下快速鍵之後,就會像這樣顯示在左上角










進階應用:
當然可以自己改 php 程式碼,讓它變成多國語言或者其他功能
這個 php程式存在 Home 目錄下 translator_Andy.php (必須執行一次才會產生)

障礙排除:

方法一:
如果剛使用或剛重新開機按下快速鍵沒反應,通常是 Mac 自己本身沒監控反應
此時請點選左上角 (右鍵也可以)(記得要先選一段文字)
ex Safari (看你是什麼程式要用)
然後選擇 "服務" > "Translator_Andy" 讓他執行一次,之後就可以了











方法二:
有時候是 Growl 沒反應
打開 "系統偏好設定" > "Growl" 然後把它關掉重開


最後:希望大家喜歡小弟的作品

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