2017年8月4日 星期五

解決PHP出現 Notice: Undefined variable 的問題

原本PHP是不須宣告變數的,在5.0版左右(?),變成要預先宣告變數,不然會出現成 Notice: Undefined variable 這個Error

解決方式:

  1. 乖乖宣告變數,我就是懶得宣告才會出現這個警告的阿...
  2. php.ini 內的 error_reporting 改成 error_reporting = E_ALL & ~E_NOTICE
使用方法2就能一勞永逸~~~


2017年7月21日 星期五

Swift 3 學習心得

最近開始學swift,發現有些google到的指令是1.0 或 2.0 的,
自己紀錄一下swift 3的心得給自己看...
  • 變數用 var 宣告 常數 用let宣告
var a=5
let b=4
  • int轉string的最簡單方法 \(int)
print("Number is \(int)")
  • Array 宣告
var array = [String]()
  • function 要宣告回傳,傳入參數要宣告型別,例如
func hello( name: String) -> String {
    return "Hello " + name + "!"
}
  • 傳入參數要改內容要宣告
func hello( name: String) -> String {
    var name = Tom
    return "Hello " + name + "!"
}
  • 使用function時,也要宣告變數名稱
hello(name: "Lee")
  • 字串切割
string.components(separatedBy: " ")
  • array 長度
array.count
  • 想到再加...

2017年7月19日 星期三

在MacOS Terminal 模式 停用 BTT(BetterTouchTool)

身為一個被Windows荼毒10幾年的資深玩家(?),轉換到MacOS之後最不習慣的幾件事是
某些熱鍵完全不同!
例如:最常用到的CTRL+C CTRL+V CTRL+X CTRL+A CTRL+Z
這幾個熱鍵 ctrl 要換成 command 也就是 windows 的 alt 按鍵的位置,但我又會開 mac 遠端 windows,所以常常搞混這幾個按鈕,最後決定花錢買 BTT 搞定,我用 BTT 把這幾個指令換成按 ctrl 也可以使用實在非常方便!

但是某天在用 terminal 的時候,發現我不能停止 ping,原來是因為中斷指令 CTRL+C 被我改成複製了,要停止 ping 必須要先把 BTT 停用或者是把整個 terminal 關掉,實在非常麻煩,後來乾脆直接設定 BTT 在 terminal 自動停用熱鍵切換功能

設定圖如下





2017年7月18日 星期二

家用AP 改刷 DD-WRT 自動登入 CHT Wi-Fi

硬體配備

  1. 有USB port 又可刷 DD-WRT 的 AP 一台
  2. 一支USB 隨身碟(不用太大 128MB以下即可)
  3. 我測試過的機器 TP-LINK TL-WDR3600, TP-LINK TL-WDR1043ND V2
  4. 有些機器官網上找不到韌體的,可以試試看 ftp://ftp.dd-wrt.com/betas/
修改步驟
  1. 先把AP 刷成 DD-WRT
  2. 把隨身碟格式成EXT4格式,然後插上AP
  3. Web管理介面,選 伺服器 > USB
  4. 在Mount this Partition to /opt 填上UUID(該頁下方找的到),讓系統自動幫忙掛載USB
  5. 另外在伺服器頁面把ssh管理打開,就可以用ssh連線,沒開的話也是可以用telnet連線
  6. ssh 或 telnet 連線的話,帳號都是root,密碼跟admin的一樣
  7. 儲存後,關閉AP電源再打開,不然你會卡關30分鐘(不會自動掛載到opt),哭哭
  8. 我之前改過一台安裝crul的時候一直錯誤,頭髮都白了好幾根,最後不知道怎麼安裝的就成功了,改第二台的時候為了不要再有白頭髮,就直接把第一台的curl copy過來用就好了XD,所以直接下載 curl 的執行檔 放入 /opt/usr/bin
  9. 到 github 下載我寫好的script https://github.com/jikker/dd-wrt-auto-login-CHT-Wi-Fi
  10. 把程式 放入 /opt/script/
  11. 修改 login-cht-wifi.sh 裡面的帳號密碼
  12. 新增資料夾 /opt/log/
  13. 新增 cht-wifi.log, cron.log 兩個檔案
  14. 在基本設定頁面 ip取得方式設 dhcp,最下面的ntp server填 time.google.com
  15. WiFi設定頁面 ath0 介面 設為 clinet 模式可以選 NG mixed 比較快
  16. SSID 填 CHT Wi-Fi(HiNet)
  17. SSID 填 CHT Wi-Fi(HiNet)
  18. SSID 填 CHT Wi-Fi(HiNet)
  19. 該有的空格跟大小寫都要有 一個字都不能填錯 !!!
  20. 該有的空格跟大小寫都要有 一個字都不能填錯 !!!
  21. 該有的空格跟大小寫都要有 一個字都不能填錯 !!!
  22. 很重要所以講三次! 
  23. 很重要所以講三次!
  24. 很重要所以講三次!
  25. 好一點的機種會有 virtual 介面可以新增,意思就是在增加一個wifi訊號,可以用無線連到這個基地台,不然只能走有線了
  26. 無線安全的部份 ath0 選關閉,有新增virtual介面的話就看你的需求了
  27. 到系統管理 > 指令 把 sh /opt/script/start.sh >> /opt/log/cron.log 填入框框內,按下 儲存啟動指令 表示機器一啟動會執行該指令
  28. 重新開機
  29. 如果一切設定正常,開機後機器就會自動連上 CHT Wi-Fi 了
RT-N18U設定方法
  1. 最近又用RT-N18U改了一台,有點小地方不一樣,記錄一下
  2. wifi模式不能選clinet要用repeater,不然無法新增另外一個wifi
  3. 使用copy進去的curl居然顯示permission denied,權限都開到777了也是一樣,後來使用原始檔重新安裝,發現1043ND用的curl只有73KB,RT-N18U的居然有135KB,換過去就ok了

設定圖片如下





































常見問題
  • 怎麼監看程式運作是否正常?
    • /opt/log/cron.log 會有log
  • 為什麼設定完全沒錯,還是無法連接?
    • 中華的機器有時候會怪怪的,看web介面,機器狀態,無線環境 ath0 的介面接收速率是否等於0,如果是的話就重開吧或者等5分鐘,因為接收速率等於0,curl會無法解析dns,就無法正常連線,程式碼有寫入5分鐘沒上線就自動重開的功能
  • 網路會穩定嗎?
    • 根據我的實際使用經驗,在距離約20-30公尺的狀態下沒有很穩,10-20公尺算穩定,但速度不會太快,約3~5Mbps而已,免錢的就湊合著用囉
    • 無線狀態介面可以觀察 ath0 的信號強度20-30公尺大概在60-70%左右
參考資料



2017年6月29日 星期四

MacOS的rotue print指令

MacOS 沒有 route print 這個指令,是有 route 但是 沒有 print XD
在mac上要看gateway狀態要使用
netstat -nr

2017年6月7日 星期三

cdex 轉mp3 出現 confusing fatal error: can't update LAME-tag frame 錯誤解決方法

這是新版library會出現的錯誤,改用舊版即可。
  1. 點這裡下載 3.96版 lame library 
  2. 解壓縮後把 lame_enc.dll 複製到cdex資料夾內取代原本的
  3. 重開cdex即可

2017年5月26日 星期五

浮點數的範圍及大小計算

好久以前的文章,剛剛才在草稿夾內被我翻出來...

直到前幾天我才搞清楚浮點數的大小與範圍是怎麼計算的,別問我計概怎麼過的,老實說,我也不知道怎麼過的XD
現在由於電腦的儲存空間實在太大,寫程式的時候誰管他花多少個bits,都馬是float(32"bytes")給它用下去就對了,甚至double float(64"bytes")在儲存的都有,不過當你做的東西與壓縮扯上關係時就不能這麼豪氣的使用這些變數了,必須要斤斤計較才可以,所以下面教大家怎麼計算浮點數的範圍與空間大小
浮點數可以把它想像成整數部分與小數部份,整數部分相信大家應該都會,如果要儲存+ - 128的整數需要8個bits的空間,這應該沒問題,但是小數部份呢?

小數部份就比較麻煩一點,看你想要儲存小數點以下幾位,要儲存越多位數自然所需的空間就越多(廢話),例如要儲存到小數點以下第三位,需要多少空間呢?
大家可以把小數點部份暫時想像成整數,所以想要儲存小數點以下三位就表示要儲存的範圍是0~999,0~999所需要的儲存空間是多少呢?8個bits可以表示0~255、9個可以表示0~511、10個可以表示0~1023,所以要表示0~999所需的最少bits數就是10個
所以要儲存+ - 128精確度到小數點以下3位的浮點數所需的空間就是8+10=18個bits,其他請依此類推