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

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
下載位置:下載 (更新)
Github: https://github.com/poi5305/translator/tree/master/app    (下載選 view raw)

備註:
須先安裝 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" 然後把它關掉重開


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

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