2015年3月18日 星期三

synology NAS 建立 git server


基本上DSM 說明上有教你怎麼設定

若要允許使用者使用 Git:

  1. 使用具管理權限的帳號登入 DSM。前往控制台 > 終端機並啟動 SSH 服務。
  2. 啟動 Git 套件。選擇要讓哪些使用者從 repository check in 及 check out 檔案。

注意:

Git 使用者會受到 git-shell 之限制,僅能進行與 Git 相關的活動。此登入型 shell 會套用至 Git 使用者,以確保這些帳號僅用於 Git 相關之操作。因此,Git 使用者僅能使用 SSH 連線來 push 或 pull Git repository,無法完整存取 DSM。

若要新增 Git repository:

  1. 透過 SSH 以 root 或 admin 身份登入您的 Synology 伺服器。
  2. 變更目錄至 /volumeX (X 代表儲存空間編號) 來建立資料夾。例如:「git_repos」。該資料夾的權限會與 Linux 相同。
  3. 於資料夾中執行 git init 來建立空的 repository。
  4. Repository 建立完畢後,Git 用戶端可輸入下列指令來存取此 repository:
    git clone ssh://[Git 使用者]@[您的 Synology 伺服器 IP 位址或主機名稱]/[Git repository 路徑]

照著上面設定完後就可以開心使用Git server 拉~~~  才怪



2015年2月10日 星期二

c/c++ 演算法技巧

今天看code 看到一個莫名其妙的東西,上網搜尋一下

unsigned popcount (unsigned u)
{
u = (u & 0x55555555) + ((u >> 1) & 0x55555555);
u = (u & 0x33333333) + ((u >> 2) & 0x33333333);
u = (u & 0x0F0F0F0F) + ((u >> 4) & 0x0F0F0F0F);
u = (u & 0x00FF00FF) + ((u >> 8) & 0x00FF00FF);
u = (u & 0x0000FFFF) + ((u >> 16) & 0x0000FFFF);
return u;
}

原來是個不知為何的演算法得出來的結果,原理大概是查表,此用法只適用於32位無號整數,目的是在算input u 總共有幾個bit為1,稍微紀錄一下。

=> 使用分治法
https://zh.wikipedia.org/wiki/%E6%B1%89%E6%98%8E%E9%87%8D%E9%87%8F

簡單來說就是先算出兩個bit裡面有幾個1
A=b'1111
(A) &(b'0101) +(A>>1)&(b'0101) =b'1010 
代表第
0,1 bit 有兩個為1 
2,3bit 有兩個為1
接著就是 shift跟加法的問題



ref.

http://blog.csdn.net/rappy/article/details/1788969

2015年1月21日 星期三

How many bytes in a packet?

Sometime, we found some devices that point out "forwarding rate, Mpps". The "pps" is the short term for packet per second. However, how many bytes in a packet? It depends, there is no specification on how many byte in a packet, you define it by yourself.

In the 100M Ethernet network,
100M bps / 8 = 12.5 MBps = 12500000 Bytes/s(Bps)

If you define the frame size is 64 Bytes (Minimum Ethernet framz size):
8 Bytes (preamble) + 64 Bytes + 12 Bytes (interframe gap) = 84 Bytes

So forwarding rate will be
12500000 Bps / 84 bytes = 148809 pps

If you define the frame size is 1518 Bytes (Maximum Ethernet framz size):
8 Bytes (preamble) + 1518 Bytes + 12 Bytes (interframe gap) = 1538 Bytes

So forwarding rate will be
12500000 Bps / 1538 bytes = 8127 pps

100M Ethernet's forwarding rate formula:
12500000 Bps / ( 8 Bytes (preamble) + (Feame Size) + 12 Bytes (interframe gap)) = forwarding rate, pps

2015年1月9日 星期五

c/c++ 運算子優先順序

優先 符號                                     運算種類                         結合
---- ----------------------                   -------------                       ------
1     ( ) [ ] -> .                                運算式                             左至右
2     ! ~ ++ -- -                             (運算元) 一元運算子     右至左
        * & sizeof
3     * / %                                       乘/除/餘數                      左至右
4     + -                                           加/減                               左至右
5     << >>                                      左移/右移                       左至右
6     < <= > >=                               關係運算子                    左至右
7     == !=                                      關係運算子                    左至右
8     &                                            位元 AND                       左至右
9     ^                                             位元 XOR                       左至右
10    |                                             位元 OR                          左至右
11   &&                                         邏輯 AND                       左至右
12   ||                                             邏輯 OR                          左至右
13   ?:                                            條件運算子                    右至左
14   = += -= *= /= %=                  指定運算子                    右至左
        <<= >>= &= |= ^=
15   ,                                              循序計值                        左至右