2017年9月5日 星期二

PHP使用JOIN時不會按照順序排序的解決方法

剛剛解掉了真是世紀無敵難的一個bug...
原因是因為 我要讓某個array按照某個順序使用join印出來
但是我array的創造方式是
$a[1] = 'b';
$a[2] = 'c';
$a[0] = 'a';
使用join,怎麼用都是印出 b,c,a
後來使用print_r 才看出問題是在 array 的創造方式,
讓array實際長的是 1 > 2 > 0 的順序,
但是使用一般for迴圈又感覺不出來,
最後使用 ksort 排序過一次之後,再使用join問題就解決了...

2017年9月4日 星期一

MySQL 使用 IN 時,按照順序回傳資料

今天寫程式的時候發現有一個bug,仔細追下去才發現是 in 居然不會按照所給的條件順序來回傳內容,google了一下才知道要按照順序回傳還要下其他指令...

select * from table where id in ( 3, 5, 7, 2, 4, 1) order by field ( id , 3, 5, 7, 2, 4, 1)
後面那個id 是要用來排序的欄位,不可省略,這樣資料就會按照 3, 5, 7, 2, 4, 1 的順序來回傳了

2017年8月23日 星期三

解決ubuntu系列中文化產生的桌面問題

ubuntu系列如果安裝語言選擇中文的話,會有一個很討厭的問題,就是桌面、下載這幾個資料夾,也幫你翻成中文,所以在終端機模式要進到桌面,要打
cd /home/user/桌面
還要切換成中文輸入法...有夠麻煩,最簡單的方式,使用ln建立英文捷徑,就搞定囉,語法如下
cd ~
ln -s 下載 ./Download
ln -s 桌面 ./Desktop

之後就能用英文指令進入桌面等資料夾了
cd /home/user/Desktop

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%左右
參考資料