在~/.bash_profile加入
export CLICOLOR=1
export LSCOLORS=Gxfxcxdxbxegedabagacad
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '
export TERM=xterm-color
在~/.bash_profile加入
export CLICOLOR=1
export LSCOLORS=Gxfxcxdxbxegedabagacad
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '
export TERM=xterm-color
以Desktop為例
NAME=Desktop
DPATH=~/Desktop
hdiutil create \
-volname $NAME \
-srcfolder $DPATH
-ov \
-format UDZO $NAME.dmg
import numpy as np;
a = np.array([1, 2, 3]);
a = np.array([ [1, 2, 3], [4, 5, 6] ]);
a = np.array([ [ [1, 2, 3], [4, 5, 6] ], [ [7, 8, 9], [10, 11, 12] ] ]);
v1 = np.array([1, 2, 3]);
v2 = np.array([4, 5, 6]);
v3 = np.dot(v1,v2); #v3 = 1*4 + 2*5 + 3*6 = 4 + 10 + 18 = 32
print(v3);
m1 = np.array([ [1, 2, 3], [4, 5, 6] ]); #size: 2*3
m2 = np.array([ [1, 2 ], [3, 4], [5, 6] ]); #size: 3*2
m3 = np.matmul(m1,m2); # m3= [ [ 1*1+2*3+3*5 1*2+2*4+3*6] [ 4*1+5*3+6*5 4*2+5*4+6*6 ] ] = [ [ 22 28 ] [ 49 64 ] ]
print(m3);
m1 = np.arange(1,5).reshape(2,2); # m1 = [ [ 1 2 ] [ 3 4 ] ]
m2 = np.arange(0,4).reshape(2,2); # m2 = [ [ 0 1 ] [ 2 3 ] ]
m3 = np.multiply(m1,m2); # m3 = [ [ 1*0 2*1 ] [ 3*2 4*3 ] ] = [ [ 0 2 ] [ 6 12 ] ]
print(m3);
import matplotlib.pyplot as plt
import numpy as np
#產生隨機資料
x_data = np.linspace(-100, 100, 300)[:, np.newaxis];
#加入雜訊
noise = np.random.normal(0, 300, x_data.shape);
y_data = np.square(x_data) - 0.5 + noise;
plt.plot(x_data, y_data, 'g.');
#動態繪製sin曲線
x = np.arange(-100,100)
for i in range(1000):
#嘗試移除畫過的sin曲線,第一次會發生錯誤,因此用try/except
try:
lines.pop(0).remove()
except Exception:
pass
#重新計算y值
y = 1000*np.sin((x+i) * np.pi/ 9.0)
#繪製sin曲線
lines=plt.plot(x,y,'r-')
#延遲0.1秒
plt.pause(0.1)
DNS伺服器扮演著將IP與網域對應的工作.
但因為當初DNS設計並沒有考量安全性的設計,導致至今有許多DNS偽造的情況.
為瞭解決上述問題,衍生出了DNSSec以及EDNS等相關技術的發展.
然而DNS已經行之有年,許多DNS Server並沒有落實EDNS.
所以過去有一段時間,公用的DNS Server對於未支援EDNS的伺服器會採用二次查詢的方式.
也就是第一次會使用EDNS查詢,失敗後改用傳統DNS方式查詢.
如此一來就可以相容兩種系統,但是也造成EDNS遲遲無法普及.
因此幾個公用的DNS Server(如Google 8.8.8.8, GloudFlare 1.1.1.1)約定在2019/2/1這天要來測試只做EDNS查詢,並將這一天稱為DNS Flag Day.
所以當DNS Server不支援EDNS時,將會造成網域名稱無法順利解析.
為避免上述狀況,本研究採用下列方式,開啟EDNS及DNSSec之設定.
下面是有關於如何將DNS提升至EDNS的方法:
1.確定網域名稱,並準備好網域設定檔
DOMAIN=cbe.tw
# 網域設定檔: ${DOMAIN}.txt
2.建立公私鑰
2.1.KSK
KSK_KEY=$(dnssec-keygen -r /dev/urandom -f KSK -a RSASHA512 -b 2048 -n ZONE ${DOMAIN})
2.2.ZSK
ZSK_KEY=$(dnssec-keygen -r /dev/urandom -a RSASHA512 -b 1024 -n ZONE ${DOMAIN})
3.將key附加到網域設定檔 ( 也就是${DOMAIN}.txt )
cat K${DOMAIN}*.key >> ${DOMAIN}.txt
4.產生加簽後的網域設定檔 ( )
dnssec-signzone -o ${DOMAIN} -k ${KSK_KEY}.key ${DOMAIN}.txt ${ZSK_KEY}.key
上述步驟將會產生:
* 加簽過後的網域設定檔,檔名會是 ${DOMAIN}.txt.signed
* DS紀錄檔(DS records),檔名會是 dsset-${DOMAIN}.
5.啟用DNSSec
* 將${DOMAIN}.txt.signed放到 DNS Server上 (如Bind9 or CoreDNS).
* 到網域註冊商上加入DS records.
* 開啟TCP 53 port,並做好對應的NAT.
6.檢測
* https://dnsflagday.net/#domain-holders
* https://dnssec-analyzer.verisignlabs.com/
* http://dnsviz.net/