Posts

Cordova Status Bar blank

由於之前因為 WKWebView 的關係 所以升級到 c ordova-ios @5(後來發現跟 io5 似乎沒關係) 但卻也造成 Status Bar 一片白的問題,只會出現綠色的電量 原本會出現日期等資訊 1. 請安裝 cordova-plugin-statusbar 套件 $ cordova plugin add cordova-plugin-statusbar 2. 將下方加入 config.xml         <preference name="StatusBarOverlaysWebView" value="false" />         <preference name="StatusBarBackgroundColor" value="#000000" />         <preference name="StatusBarStyle" value="lightcontent" />         <preference name="StatusBarDefaultScrollToTop" value="false" /> 3. 重新 build $ cordova platform rm ios $ cordova platform add ios@5 請注意,一定要使用 5 的版本 不然會無效喔 參考資訊 Status bar is always white #109

使用 acme.sh 搭配 Let's encrypt 申請 wildcard ssl 憑證

Image
之前一直都是使用 certbot 套件 不過換到 CentOS 8 後 這個套件到今天(2020.05.28)為止還沒支援就是 由於 certbot 是用 pythlon 開發的 所以安裝時會安裝一堆相依的套件 這也是我一直不喜歡用 certbot 的原因 會間接搞亂我的環境 後來找到 acme.sh 是使用 shell script 撰寫的 相對來說單純很多 安裝也很簡單 這個範例是搭配 Cloudflare DNS 做設定 安裝 acme.sh 我是使用 root 執行安裝的 curl  https://get.acme.sh | sh 所以安裝完會出現 /root/.acme.sh 這個資料夾 取得 Cloudflare 的 key 登入你的 cloudflare 帳號後 到這個頁面  https://dash.cloudflare.com/profile/api-tokens 點選下方「Global API Key」右邊的 View 認證完後會取得一組 Key 申請 SSL 憑證 在 /root/ 下新增一個 ssl_cert.sh 檔案 其中 yourdomain.tld 為你自己的網域名稱,如 google.com 因為有指定目錄於 /etc/letsencrypt 中 所以憑證應該會出現在 /etc/letsencrypt/yourdomain.tld 下 由於是 wildcard 的關係,所以會指定兩個 domain 分別為 yourdomian.tld 及 *.yourdomain.tld 請注意,務必讓 yourdomain.tld 在第一個,如果讓 *.yourdomain.tld 在前面的話,你的資料夾就會是 *.yourdomain.tld export CF_Key="your global api key" export CF_Email="你的 cloudflare 登入的帳號(信箱)" /root/.acme.sh/acme.sh --issue -d yourdomain.tld -d *.yourdomain.tld --cert-home /etc/letsencrypt --keylength 2048 --dns dns_cf \ --reloadcmd "system...

ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.

Image
我的環境是 Cordova 8.1.2 Cordova 4.5.5 由於 Apple 之前已經有預告 2020.4.30 後不支援 UIWebView 需改成 WKWebView 如果沒改的話就會出現下面的錯誤 且上傳自動審核時會直接踢掉 然後直接發如上圖那封信給你 ITMS-90809: Deprecated API Usage  - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more ( https://developer.apple.com/ documentation/uikit/uiwebview ) . 只要依照下面幾個步驟就可以解決這個問題 1. 安裝 cordova-plugin-wkwebview-engine 套件 # cordova plugin add cordova-plugin-wkwebview-engine 2. 使用 cordova-ios 5 的版本(我的環境預設是 4,所以要手動) # cordova platform rm ios # cordova platform add ios@5 3. 修改 config.xml <platform name= "ios" > <preference name= "WKWebViewOnly" value= "true" /> <feature name= "CDVWKWebViewEngine" > <param name= "ios-package" value= "CDVWKWebViewEngine" /> </feature> <preference name= "CordovaWebViewEngine" value= ...

Drupal 8.4 upgrade to 8.6

紀錄從 Drupal 8.4.8 升級到目前最新的 8.6.16 不升級到 8.7.1 是因為可能還不是很 stable 的關係 請注意:更新前先備份資料夾跟資料庫,如果更新失敗還可以復原 Drupal8 升級 Kernel 的方式好像跟之前不太一樣 主要是透過移除 `/core` 及 '/vendor' 資料夾後 再將新版本的這兩個資料夾上傳 上傳完後執行 `update.php` 執行 `update.php` 需要注意 `/sites/default/files` 的權限問題 另外不建議一直就直接跨越升級 8.4 -> 8.6 建議先升到下個版本的最新版 然後執行上述步驟重傳 `/core` & `/vendor` 及執行 `update.php` 等 Kernel 升級完後 最後再來升級 modules Drupal8 的 modules 預設在 `/modules/contrib` 裡面 也是將舊版的 module 資料夾刪除後重新上傳 module 都上傳完後再執行 `update.php` 即可 環境: Drupal 8.4.8 PHP 7.1.27 CentOS 7.5

mac 安裝 mtr

Image
macOS 上要安裝 mtr 看似簡單 $ brew install mtr 如果沒安裝過 HomeBrew 請參考這邊 mtr 可拿來檢查點對點中間的網路狀態 它結合 ping 及 traceroute 的功能 已內建於大多數的 Linux 中 詳細的說明可參考這邊 但這邊有個坑 由於安裝好的 mtr 不在 /usr/local/sbin 中 macOS 中也不存在這這個目錄(macOS 10.14.3) 所以會出現以下的錯誤 Error: The brew link step did not complete successfully The formula built, but is not symlinked into /usr/local Could not symlink sbin/mtr /usr/local/sbin is not writable. You can try again using: brew link mtr ==> Caveats mtr requires root privileges so you will need to run sudo mtr . You should be certain that you trust any software you grant root privileges. 執行 brew link mtr 會出現 Linking /usr/local/Cellar/mtr/0.92… Error: Could not symlink sbin/mtr /usr/local/sbin is not writable. 如何設定 1. 建立目錄及設定權限 sudo mkdir /usr/local/sbin && sudo chmod ug+rwx /usr/local/sbin && sudo chown $(id -un):admin /usr/local/sbin 2. 設定 PATH 如果有裝 zsh 的話 請編輯 vi .zshrc 如果沒有使用 zsh 請編輯 vi .bash_profile 將下面的部分貼到最下方 export PA...

如何抓取最近生日的人

Image
如果想要抓取今天前後一週生日的人 SELECT * FROM customer t WHERE MOD(DAYOFYEAR(CURDATE()) - DAYOFYEAR(t.birth) + 365, 365) <= 7 OR MOD(DAYOFYEAR(t.birth) - DAYOFYEAR(CURDATE()) + 365, 365) <= 7 如果要抓取未來兩週生日的人 SELECT * FROM customer t WHERE MOD(DAYOFYEAR(t.birth) - DAYOFYEAR(CURDATE()) + 365, 365) <= 14 參考來源

Chrome Extension: 使用 Native Messaging 的方式串接讀卡機

Image
前提 由於需用 NFC 登入系統 評估後使用 新錼 CL-2100R 來實作 構想是用 Chrome Extension 串接讀卡機可快速登入系統 因 NPAPI 已經被淘汰了 所以用 Native Messaging 來開發 網路上有關 winscard.dll 跟 native messaging 的資料不多 一開始一直被誤導 以為可以直接呼叫 winscard.dll 今天看到 這篇文章 才晃然大悟 直接在 path 中帶入 winscard.dll 是 NPAPI 的做法 (因為直接 call .dll 不安全,所以才捨棄 NPAPI 的啊 XD) 如何在 Mac 上測試是否有抓到讀卡機 可以輸入以下指令 如果有出現讀卡機的型號就代表有抓到 $ pcsctest MUSCLE PC/SC Lite Test Program Testing SCardEstablishContext : Command successful. Testing SCardGetStatusChange Please insert a working reader :(我在這邊就卡住了) 如何執行 Chrome Extension 這邊不講解要如何載入開發的程式 只提該怎麼把 Chrome Extension 程式呼叫出來 可在 Chrome 網址列輸入 chrome://apps 就會出現安裝好的 Extension 如果沒出現請確認 Extensions 頁面有開啟該程式 註 winscard.dll 是 Microsoft Windows 內建的動態連結函式庫 基本上讀卡機都是用 winscard.dll 來提供服務 Linux/Mac 上則是使用 PC/SC lite 通常讀卡機廠商都不是自己寫 driver 都用公版程式 Mac 上早在 10.9 版以後就不支援了(10.8 還支援) 我用過兩個牌子都一樣 問過讀卡機廠商也是不了了之 所以目前要在 Mac 上面支援是有困難的(目前的 Mac 版本是 10.14) Reference Chrome Native Messaging Exampl Calling a C dll through chrome browser exten...