2017年12月15日 星期五

ubuntu 查詢硬碟相關資訊

df -h : 查詢硬碟剩餘空間跟使用空間

du -h : 查詢目前資料夾下的硬碟使用大小(會列出所有檔案)

du -sh: 查看目前資料夾下的影碟使用大小(只列出檔案大小)


2017年12月8日 星期五

在vuejs使用setInterval

methods : {
   startTime: function() {
       setInterval(this.loop(),  1000)
   },
   loop : function() {
       console.log("in loop")
   }
}

在vuejs寫setInterval時
使用上面的做法,setInterval一直無法正確作用
執行第一次之後不會再執行了

經過不斷的測試之後
終於發現應該要用 this.loop 而不是this.loop()
立刻開啟node來測試
node並無法正常執行
會顯示 throw new TypeError('"callback" argument must be a function');
但在vuejs時沒有任何報錯
花了我不少時間才找出這個問題 0rz

2017年12月4日 星期一

ssh connect refuse

今天突然發現某台主機無法使用ssh連線,也完全ping不到
直接開啟那台主機來看,發現ip都還在
經過檢查之後才發現原來是那台主機連線的hub電源被人拔了
把hub電源接上去之後,ping是可以ping到了
但是ssh連線一直顯示port 22: Connection refused

於是上網查詢會出現這個訊息大概會有三種原因
1.  預設的ssh port 22被改掉
去檢查/etc/ssh/ssh_config後正常
netstat -r 後也確定ssh有listen 22
畢竟我本來就沒改過這個

2. ssh port 22被擋掉
ufw status 檢查防火牆狀態,顯示inactive
恩,畢竟是在內網,所以我根本沒開
/etc/hosts.allow
/etc/hosts.deny
檢查是否有擋到host
我從來沒動過這兩個檔案,所以內容都空的
保險起見hosts.allow還是加上SSHD: ALL
結果還是無法連上

3. ip在LAN裡面有衝突
因為使用dhcp的關係,覺得還蠻有可能的
不過查了一下都沒看到有衝到的主機
接著在我的mac上用 arp -na 檢查arp tables
結果發現要連線的目標位址的MAC address跟實際的MAC address不一樣
於是先sudo arp -a -d清除cache看看
結果發現再ping一次存進去的MAC address還是錯的
於是我就去refresh Gateway主機的routing table
確定MAC address都正確後再ssh一次

感謝老天終於恢復正常了


webpack-dev-server 顯示 Invalid Host Header

webpack-dev-server會對連線進來的host name做驗證
(除了host為localhost或127.0.0.1時不會檢查)
可以在執行命令時增加 --public參數
告訴webpack授權的host name

參考出處

2017年11月16日 星期四

siege測試basic authorization

要進行使用basic authorization的測試時
Header需要加上
authorization: 'Basic Token'

Token為一包含username跟password中間用冒號分隔的base64編碼字串
EX (js):
let user = 'username'
let pwd = 'password'
let token = new Buffer(user+":"+pwd).toString('base64')

siege -c10 -r10 -H "Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ=" http://localhost

  • -c : concurrent users,模擬使用者的數量
  • -r : 每個concurrent user發出的request的數量
  • -H : header的內容
  • 一個以上的headers,重複加上 -H  ex:   -H "key1:value1"  -H "key2:value2"

在mac底下安裝siege時碰到的問題

下載siege
http://download.joedog.org/siege/siege-latest.tar.gz

siege如果需要支援https的測試
需要安裝zlib跟openssl

在mac使用homebrew安裝這兩項

brew update
brew install zlib
brew install openssl

但是在執行siegn的configure時
發現依然找不到zlib跟openssl

首先確認zlib跟openssl安裝的目錄
這兩項分別是安裝在
/usr/local/opt/zlib
/usr/local/opt/openssl

開啟configure後,發現configure搜尋的目錄裡面並沒有包含這兩個路徑
於是分別在19808行
for dir in /usr /usr/local /usr/local/ssl /usr/pkg /usr/lib/ssl /usr/include/ssl /usr/include; do
加上/usr/local/opt/openssl
跟19958行
for dir in /usr /usr/local /usr/local/ssl /usr/pkg /usr/lib/zlib /usr/include/zlib /usr/include; do
加上/usr/local/opt/zlib

接著
./configure
make
make install

完成後測試
siege https://www.google.com
就有成功送出https的request了