2014年7月27日星期日

Sublime 中安裝 Evernote 外掛,支援 Markdown (Mac)

Sublime 中安裝 Evernote 外掛,支援 Markdown (Mac)
Install Evernote Plugin in Sublime supported Markdown (Mac)

安裝 Evernote 外掛好處

  1. 可以直接存取 Evernote 記事,新增、儲存、開啟、更新,不需寫在本機
  2. 支援 Markdown (在Sublime寫Markdown格式,Evernote 呈現)(本文利用 Markdown 所寫,寫完後顯示在 Evernote,然後複製到此 Blog貼上)

安裝方法 (In Sublime)

1. 安裝 Package Control

  • 到 Sublime Package Control 官網安裝頁面 Link:PackageControl
  • 複製左半邊的 Code (對照 sublime 的版本, 2 or 3)
  • 到 Sublime 中,按下 Ctrl+ ` 三個鍵,並貼上剛剛複製的 Code,按Enter,就完成安裝 (等20秒鐘)
註:Code 長這樣:
import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

2. 安裝 Evernote Plugin (In Sublime)

  • 按下 (In Mac) cmd+shift+p, (In Windows) ctrl+shift+p ,會跳出一個框框
  • 輸入 package control: install package,會剩下一個選項,按 enter,又會有一個輸入框
  • 輸入 evernote,找到 Evernote 按下 enter,等一下就安裝好摟
  • 這時候按下 cmd(ctrl)+shift+p ,輸入 evernote 就可以看到一堆 evernote 連結的功能摟!!

3. 設定 Evernote 帳號

  • 要先取得 Evernote 授權,請到 Get Evernote API Token
  • 登入後,點選 Create a developer token,會得到 Developer token 和 NoteStore URL,把他記下來
  • 到 Sublime ,點選上面工具列 Sublime Text > Preferences > Package Setting > Evernote > Setting User,後會開啟一個新文字視窗。
新文字視窗內容長的像這樣:
{
    "noteStoreUrl": "https://www.evernote.com/shard/xxx/notestore",
    "token": "S=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
  • 把剛剛的 Developer token 貼上到 token , NoteStore URL 貼上到 noteStoreUrl 並且儲存。這樣就有權限使用 Evernote Plugin 功能 ( cmd(ctrl)+shift+p, 輸入搜尋 evernote )。

4. 設定 Evernote 功能快速鍵

  • 每次都要搜尋 Evernote 功能很麻煩,所以可以設一些快速鍵,用起來就跟處理一般檔案一樣方便。
  • 到 Sublime ,點選上面工具列 Sublime Text > Preferences > Key Bindings - Users,會打開一個文字視窗。
  • 在裡面輸入快捷鍵以及指令:
類似這樣的 Json 格式:
[   
    { "keys": ["ctrl+e"], "command": "show_overlay", "args": {"overlay": "command_palette", "text": "Evernote: "} },
    { "keys": ["ctrl+s"], "command": "send_to_evernote" },
    { "keys": ["ctrl+o"], "command": "open_evernote_note" },
    { "keys": ["ctrl+u"], "command": "save_evernote_note" },
]
  • ctrl+e :顯示 Evernote Plugin 所有功能
  • ctrl+s :儲存新的文章進入 Evernote (要儲存時會要求填寫 Title, Tag, 選擇存放的筆記本)
  • ctrl+o :開啟Evernote筆記 (會要求選 記事本, 記事文章)
  • ctrl+u :更新文章,必須是已經 新儲存 或是 已經打開 過的才可以使用
  • 當然,快速鍵的按鍵方式,可以自行更改,也可以覆蓋預設的方法。像是改成 cmd+s,把原本的儲存功能換掉。(還是可用選單的儲存存入本地磁碟)


以上為小弟的安裝過程,希望可以幫助到有需要的人 

2014年7月26日星期六

C++ bits fields speed test

C++ bits fields speed test


原始程式碼

https://github.com/poi5305/utility/blob/master/bits_fields_speed_test.cpp


//=========================================//
RT.start_timer("old");
for(uint32_t i=0; i < genome.size()/4; i++)
{
uint8_t cpint ( table[ genome[ (i<<2)+0 ] ] );
for(uint32_t j=1; j<4; j++)
{
cpint = cpint << 2;
cpint = cpint | table[ genome[ (i<<2)+j ]];
}
compressed_genome_2[i] = cpint;
}
RT.print_timer("old");
//=========================================//
//=========================================//
RT.start_timer("bits fields version 1");
for(uint32_t i=0; i < genome.size()/4; i++)
{
compressed_genome_1[i].bits.b4 = table[ genome[ (i<<2)+0 ] ];
compressed_genome_1[i].bits.b3 = table[ genome[ (i<<2)+1 ] ];
compressed_genome_1[i].bits.b2 = table[ genome[ (i<<2)+2 ] ];
compressed_genome_1[i].bits.b1 = table[ genome[ (i<<2)+3 ] ];
}
RT.print_timer("bits fields version 1");
//=========================================//
//=========================================//
RT.start_timer("bits fields version 2");
for(uint32_t i=0; i < genome.size()/4; i++)
{
compressed_genome_3[i].bits = {
table[ genome[ (i<<2)+3 ] ],
table[ genome[ (i<<2)+2 ] ],
table[ genome[ (i<<2)+1 ] ],
table[ genome[ (i<<2)+0 ] ]
};
}
RT.print_timer("bits fields version 2");
//=========================================//

/*
Mac clang -O2
Genome size: 400000000
old: 7315
bits fields version 1: 7258
bits fields version 2: 6582
Values of three methods are the same
bits fields version 3: 6484
Mac clang -O3
Genome size: 400000000
old: 398
bits fields version 1: 779
bits fields version 2: 500
Values of three methods are the same
bits fields version 3: 505
Ubuntu g++-4.8 -O2
Genome size: 400000000
old: 1273
bits fields version 1: 2079
bits fields version 2: 1019
Values of three methods are the same
bits fields version 3: 981
Ubuntu g++-4.8 -O3
Genome size: 400000000
old: 1335
bits fields version 1: 2086
bits fields version 2: 995
Values of three methods are the same
bits fields version 3: 937
*/

2014年6月27日星期五

解決 Docker DNS 查詢不到問題

Problem:

Error response from daemon: Get https://index.docker.io/v1/search?q=ubuntu: dial tcp: lookup index.docker.io: no DNS servers

Answer 1:

add name server 127.0.0.1 to /etc/resolv.conf

vim /etc/resolv.conf
nameserver 127.0.0.1
nameserver 8.8.8.8

service docker restart

Answer 2:
add name server 127.0.0.1 to /etc/network/interfaces

vim /etc/network/interfaces
dns-nameservers 127.0.0.1

ifdown eth0 && ifup eth0

service docker restart 

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