2020年4月8日 星期三

MacOS上使用nw.js讀寫檔案的坑

最近用nw.js在寫桌面程式,想把原本的for windows的程式改為跨平台,但是一下子就遇到好 幾個坑,紀錄一下心得...


  • 最好使用絕對路徑
    • 在win底下,我把設定檔寫成javascript變數,存成.js檔,需要時用script src='setting.js' 讀取回來
    • 在mac底下,nw.js要讀取檔案前面要使用 file:// 開頭,否則nw.js會把他當成chrome的擴充程式要去讀取,就會出現 chrome-extension://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/setting.js 404 not found 的錯誤
      所以要寫成 script src='/var/tmp/setting.js'
  • 檔案權限問題
    • 在mac上,權限控管比較嚴格,選用的路徑當然會有限制了,精美的官方文件告訴我們使用者資料最好放在/usr/local底下,把特,人生最重要的就是這個把特!!! /usr/local 這個目錄的權限還是root,底下的其他目錄權限才是使用者,所以你如果沒用 sudo 先開好你要的資料夾並給予權限,還是寫不進去...,所以 /usr/local/xxx/setting.js 會無法寫入,要改成 /usr/local/var/xxx/setting.js 才可以,就...很醜 XD
    • 我個人建議,程式不重要的檔案暫存路徑就放 /var/tmp/ 底下吧,預設權限是777,爽~~~
  • 還是檔案權限問題...
    • 第一點說到,mac底下,nw.js讀取檔案要使用 file:// 開頭,是的! 只有讀取檔案要加 file:// ,如果你在寫入檔案的時候加入,就算你是要寫一個檔案到777權限的資料夾,他一樣會跳出 read only file system 的錯誤...真是無敵大的坑你知道嗎....
    • 所以,要寫一個跨平台的nw.js,如果要使用暫存檔的話,記得把讀取跟寫入的路徑分開,才不會出現錯誤...

2019年11月1日 星期五

Cordova inappbrowser iOS 上關掉 toolbar 的方法

inappbrowser 的大坑 文件上寫設定toolbar=no就能關掉都是騙人的

以下為暴力解

用記事本打開以下檔案

YOURAPPNAME/platforms/ios/YOURAPPNAME/Plugins/cordova-plugin-inappbrowser/CDVInAppBrowserOptions.m

self.toolbar = YES;  改為  self.toolbar = NO;

存檔,重build,搞定

2019年5月24日 星期五

PowerShell 批次改名指令

將檔名中的ABB改為ABC

Dir | Rename-Item -NewName { $_.name -replace "ABB", "ABC" }

2018年8月16日 星期四

Tenda nova mw3 使用心得

家裡是透天,之前是每層樓都放一台wifi,然後把SSID都設成同一個名字,
理論上,走到那層樓,手機會自動連到該層的wifi,
可是這樣做有缺點,wifi還沒有完全斷開之前,不會改連訊號強的wifi,
所以會造成,走到別層樓,結果網速變超差,需要手動斷開重連。

後來有新技術MESH出現,號稱可以做到漫遊不斷線,但是價格都偏貴,
3件一組價格都快破萬,實在難以接受,後來看到tenda的nova系列,
算是最入門的mesh系統,mw3三件一組不到5000,
前幾天因為momo購物下殺1000,3件一組的mw3,4000有找,於是就拜下去了。

用了幾天的心得是

1. 完全傻瓜式安裝,主機弄好之後,其他兩台插電就能用了
2. 號稱:每台都是主機,假的!還是要透過有接Wan口的那台(主機)出去
3. 穿牆功能普普,就算訊號顯示非常好,過一層地版速度還是減半,所以在1樓速度是100M,2樓只有40-50M,3樓只有10-20M
4. 綜合 2,3 點,最適合的擺放方式是,主機放2樓,這樣就能達到最佳效果
5. 跟雞肋一樣的有線回程功能,有線回程的意思是,透過網路線,讓副機的走有線回到主機出去,所以距離再遠也不掉速,我本來以為這個功能wan是隨便接一條就行,所以我每台都接一條小烏龜出來的wan,想說他能透過小烏龜互通,結果他的接法是要主機的lan接副機的wan,副機的lan再去接第二台副機的wan...如下圖所示...



為什麼我說這功能雞肋呢?
如上圖所示,主機端 1F -> 2F 這很正常,有線通常能通,但是 2F -> 3F,家裡通常不會有這種有線配置,所以這功能就廢掉了...

結論:
想用Tenda nova mw3達成,全棟wifi不掉速,不可能
想用Tenda nova mw3達成,全棟wifi不斷線,可以
mw3不要買,直上mw6比較好,因為mw3 Wan/Lan孔 只支援到 100M,區網超慢...

2018年6月13日 星期三

PHP PDO 使用 LIKE 進行模糊搜尋的正確寫法

一般來說 SQL 裡面,要用模糊搜尋,可使用%來當作萬用字元*,例如

$sql = "select * from user where name like '%$name%' ";

但是PDO為了避免被SQL injection攻擊,會把符號自動轉換前後加上拖曳字元等,讓攻擊失效,可是這會造成 LIKE 的語法,解析錯誤,所以正確的PDO寫法為

$name = '%'.$name.'%';
$sql = "select * from user where name like :NAME";
$d = $this->DB->prepare($sql);
$d->bindParam(":NAME", $name);
$d->execute();
$data = $d->fetchAll();

2018年5月31日 星期四

php curl 發送 request payload 資料

一般來說 在網頁上傳輸資料 通常都是用 form 在丟,所以資料 會放在 form data 這個區塊,
但是我這幾天碰到一個神奇的網站,資料是塞在request payload裡面的,爬了好多文才知道該怎麼正確的丟...


$post_data = 'path=down
month=2018/05/31
cnt=1
itemno=22';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 1); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); // basic auth 認證}
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result=curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
curl_close ($ch);
重點如下

  1. Content-Type 要設為 application/x-www-form-urlencoded 不要被browser的 text/plain 騙了
  2. 超奇琶的變數設定方法,請看上方的$post_data,直接用 path=down這樣設定變數內容,然後如果有多個變數,直接用換行切換,直接用換行切換,直接用換行切換,很重要所以要說三次...

2018年5月21日 星期一

Windows 10 1803版 升級後吃掉所有硬碟空間 解決辦法

家裡的 Win10 前幾天自動升級到1803版,過沒多久跳出磁碟空間不足的提示,我用磁碟清理工具看了一下,發現1709版的恢復記錄佔用了23G,就把恢復記錄刪掉了,清出了23G的空間

結果隔天又跳出了磁碟空間被佔滿的消息,我還以為是中了病毒,用程式掃了一下,發現是Windows\Temp佔用最多空間,就把Windows\Temp給清空了,不過,過沒幾分鐘,Windows\Temp又跑出一堆*.evtx的檔案,打開後發現是Windows的事件管理員產出的記錄檔,但是這個記錄又看不出到底是哪邊出現的錯誤...這個是事件檔會以每分鐘約100MB的速度產出,怪不得硬碟空間一下就滿了

因為沒時間重灌,只好先寫個排程,固定每一小時去刪一次這些佔存檔,後來要用到計算機,打開開始功能表才發現,小算盤名稱變英文了,一些內件的Windows應用也是如此,而且通通打不開...,只要想打開這些程式,evtx檔就會爆增...連打開"開始功能表"也是...

最後解決辦法,當然是重灌拉,不過不得不稱讚一下現在重灌真的變好簡單,設定裡面選"復原",然後選不清除個人資料,大約10分鐘後就搞定了,還會列出哪些程式之前裝過,但是被系統移除的,在自己裝回來即可...