2016年4月28日 星期四

雙重授權軟體的問題

前陣子Wyliodrin把他們的開發環境給開源了,因為想要修改程式碼,加上自訂的block。修改過的程式有可能用在商業用途,便找了他們的使用授權,上面這樣寫著:

License

This software is available under several licenses, depending of the use.
Non-commercial & educational - GPLv3 Please contact us at office@wyliodrin.com for a commercial license.
如果看到上面的描述你會怎麼想呢?『只能用在非商業及教育用途?商業使用需要額外取得授權!?』我原本以為這是禁止非商業使用,但這樣就跟GPL授權相牴觸。

其實上面的描述不夠精確,正確的說法是如果要進行商業使用,但又不想釋出修改過的原始碼(GPL授權的要求),可以聯繫Wyliodrin取得授權。當然在遵守GPLv3的情況下進行商業使用,自然沒有任何問題。

另外一個軟體過去也曾碰到相同的問題引起使用者的疑惑,最後他們把授權聲明寫的更明確才解決。

2016年4月8日 星期五

Cloudflare有台灣的出口了

真是後知後覺...
https://twitter.com/codetengu/status/718331771713163264

然後測試應該是在國內沒錯,不確定在哪個機房。
linux-gap3 (0.0.0.0)                                              Fri Apr  8 15:41:28 2016
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                  Packets               Pings
 Host                                           Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 192.168.2.249                                0.0%    12    0.2   0.2   0.1   0.3   0.0
 2. 125-227-128-254.HINET-IP.hinet.net           0.0%    12    6.4   6.2   5.7   7.0   0.0
 3. tpdt-3307.hinet.net                          0.0%    11    6.5  10.4   5.6  37.5   9.5
 4. 220-128-2-22.HINET-IP.hinet.net              0.0%    11   11.6  13.5   9.8  18.6   2.9
 5. r4102-s2.tp.hinet.net                        0.0%    11    6.4   6.5   5.7   6.9   0.0
 6. Customer.WAN-Port.AR.HiNet.NET               0.0%    11    7.3   7.3   6.4   8.4   0.3
 7. 104.27.134.206                               0.0%    11    7.2   6.8   6.2   8.3   0.5


不過走IPv6就會繞到國外去
                                  My traceroute  [v0.86]
linux-gap3 (::)                                                   Fri Apr  8 15:41:43 2016
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                  Packets               Pings
 Host                                           Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 2001:b030:1005:100::1                        0.0%     2    0.3   0.3   0.3   0.3   0.0
 2. 2001:b030:1005:ff1d::ffff                    0.0%     2    7.0   6.8   6.5   7.0   0.0
 3. 2001:b000:a0:5:22:2631:141:2                 0.0%     2    8.1   7.4   6.7   8.1   1.0
 4. 2001:b000:80:4:3012:3308:2:2                 0.0%     2   14.8  13.2  11.6  14.8   2.2
 5. 2001:b000:80:4:3012:4103:7:b                 0.0%     2    6.0   6.4   6.0   6.7   0.0
 6. 2001:b000:80:4:13:27:1:1                     0.0%     2    6.4   8.0   6.4   9.5   2.0
 7. 2001:b000:80:7:211:72:233:41                 0.0%     1   50.5  50.5  50.5  50.5   0.0
 8. ae-4.r22.osakjp02.jp.bb.gin.ntt.net          0.0%     1   50.0  50.0  50.0  50.0   0.0
 9. ae-5.r30.tokyjp05.jp.bb.gin.ntt.net          0.0%     1   53.9  53.9  53.9  53.9   0.0
10. ae-5.r02.tokyjp03.jp.bb.gin.ntt.net          0.0%     1   55.4  55.4  55.4  55.4   0.0
11. 2001:218:2000:5000::3a2                      0.0%     1  165.7 165.7 165.7 165.7   0.0
12. 2001:cb0:104:1:19::1                         0.0%     1  166.7 166.7 166.7 166.7   0.0
13. 2001:cb0:104:1:1b::2                         0.0%     1  166.3 166.3 166.3 166.3   0.0
14. 2001:cb0:105:1:17::2                         0.0%     1  165.1 165.1 165.1 165.1   0.0
15. 2001:cb0:105:2:10::2                         0.0%     1  170.1 170.1 170.1 170.1   0.0
16. 2400:cb00:2048:1::681b:86ce                  0.0%     1  166.6 166.6 166.6 166.6   0.0

2016年1月11日 星期一

Django在Python2/3的環境下,上傳檔案的差異

在Python 2的情況,取用request.POST裡的檔案,其型態會是str,不需要額外處理就能使用。

但是在Python 3的情況,request.POST的檔案變成bytes,不轉換成str就沒辦法處理,所以我是用以下的方式:
f = TextIOWrapper(request.FILES['file1'].file, encoding=request.encoding)
來源參考這一篇:
http://stackoverflow.com/questions/26724453/django-uploaded-file-is-binary-is-it-possible-to-change-to-utf-so-readline

2015年12月15日 星期二

買了Pioneer SE-NC21M降噪耳機

雖然沒打算寫很長的文,不過你打算只看結論的話:如果你經常搭乘交通運輸,這個還蠻適合的,除此之外就不建議買。

2015年12月8日 星期二

使用IPv6

因為中華電信現在開放光世代客戶上網申請IPv6,我就去申請了,然後發現...

Ubuntu 15.04會取得兩個global link v6的IP,一個是亂數產生,一個是後64bits使用網卡Mac位址。而在CentOS 7裡頭,只有一個使用Mac位置的v6 IP。

在IPv6無狀態自動設置會使用Mac位置IP(RFC 4291),因為這個IP不會變動,存在隱私的疑慮。

為了解決以上的問題, Privacy Extensions (RFC 4941)就誕生了,除了原本使用的Mac位置IP之外,還有一個亂數產生的IP,而且會定期更換IP。但是這在某些情況下會造成問題,例如IP在被更換之後,被網站或應用程式認定已登出。而且RFC 4941沒有替代Mac位置的v6 IP,這代表隱私洩漏依然有可能發生。

RFC 7217試圖解決上述的問題,這裡產生的IP是根據演算法所產生的『相對固定』IP,在同一個子網路之下,不管硬體如何更換IP都是相同的,但是主機移到不同的子網路就會產生不同的固定IP,並且確保這個演算法是單向的。因為是固定IP,要進行管理也變得簡單。

目前看來,每個作業系統的實做都不太相同。CentOS 7因為使用NetworkManager 1.0.0,所以只支援Mac位置IP。而Ubuntu 15.04的NetworkManager是0.9.10.4,卻支援Privacy Extension(打了patch?)。Win7也會有兩個IP,其中一個是『臨時IPv6位址』,應該就是依據Privacy Extensions所產生的,不過另一個卻不是Mac位址IP?

NetworkManager在1.2版之後也會支援RFC 7217。