分類
系統技術

Vultr High Frequency Compute機種每月6元

Vultr High Frequency Compute機種每月6元

昨天在做 lab 時, 使用了 Vultr 主機, 有出 High Frequency Compute機種, 使用了 NVMe 這種存放體, 實測了一下效能高不少, 而且低規的機種, 每個月是 6美元, 十分適合做 lab 使用.

官方網站比較如下:

原 SSD (High Performance Compute)機種:

新 NVMe (High Frequency Compute)機種:


效能多了 50%, 每月才多1美元, 十分划算, 快利用推薦碼申請還有 USD 100元可用:

https://www.vultr.com/?ref=8432242-6G

來試看看吧.

繼續閱讀:

https://diary.tw/archives/33

分類
好用軟體

uptimerobot public status page功能

好用的 uptimerobot 服務, 參考之前文章: https://diary.tw/archives/216

之前 public status page 是在付費版本才有的, 現在已能在免費版本建立, 可以利用這個功能建立更方便的監控介面, 官方的監控在這裡(也是實際的 demo):

https://status.uptimerobot.com/

設定好之後, 可以使用 standard url 如: https://stats.uptimerobot.com/xxxx 或自訂網域方式(它也會協助建立 free ssl)實施, 配合自訂密碼, 方便呈現完整的 monitor dashboard.

免費版本無法看到 weekly view 與 monthly view, 僅有 daily view (僅最後 7天). 但也十分能滿足一般應用了.

還有整合進 slack channel 功能也十分方便, 不同的通知模式, 增進使用便利性.

請參閱官方相關資料:
https://blog.uptimerobot.com/introducing-public-status-pages-yay/
https://blog.uptimerobot.com/status-pagescustom-domains-are-now-https-enabled/

分類
FreeBSD/Linux

Apache使用.htaccess重導新網域

有時因為網域修改, 需要做網域級的重導, 建議使用 301 配合 .htaccess 的設定來進行, 可以使用以下語法:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com$
RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L]

其中的 R=301 是使用了 301重導, 而新舊域名可以參考上面語法, 並且使用了 RewriteRule 將任意內容重導至新網域時, 維持相同的網址.

參考資料: https://wpscholar.com/blog/redirect-old-domain-to-new-domain-via-htaccess/

分類
PHP

php上實作301 Redirect指示方式

在 php 中若需要重導客戶端, 可以使用 302 重導:

header("Location: http://newlocation");

在不指定 response status 時, 上述內容會使用 302 重導.

若需要使用 301 重導, 可以使用如下程式:

1. 先宣告重導指示, 再進行重導:

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://newlocation");

2. 直接使用 header 中的 response status 參數:

header("Location: http://newlocation", TRUE, 301);

以上兩種方式皆可以重導客戶端至指定目標, 並且以 301 Moved Permanently 方式指示.

繼續閱讀:
https://blog.longwin.com.tw/2015/09/php-301-302-redirect-header-2015/
https://stackoverflow.com/questions/7324645/php-header-redirect-301-what-are-the-implications
https://www.php.net/manual/en/function.header.php

分類
數學

有難度的Wi-Fi password


來解看看, 用 wolframalpha:

https://diary.tw/s/intwifi

結果答案是…. 3.141592653589…..

繼續閱讀:
https://news.tvbs.com.tw/fun/989791
https://gotv.ctitv.com.tw/2017/03/435561.htm
https://www.newmobilelife.com/2016/11/01/the-most-difficult-wifi-password-in-the-world/

分類
手機大未來

Subway集點卡使用echoss技術

從 subway 活動看來的:

https://service.12cm.com.tw/subway/campaign/2019/show_stampcard_campaign

需要 login line 帳號, 即可看到畫面.


使用電子數位章, 配合 line 帳號登入, subway 的官方說明可以參考:

http://www.twsubway.com.tw/GoWeb2/include/index.php?Page=3-1&event01=14921144735d4b8f547b8bd

目前星巴克的多項活動也都用這家公司的技術, 參閱之前的文章:
https://diary.tw/archives/54

使用了多點觸控的數位章來進行活動集點, 核銷等作業, 十分有趣也實用.

分類
數學

[數學]絕對值特性

由於 x<-1 與 x>7, 所以先找出中點 5/2, 然後用絕對值來減中點得外部的定值, 之後化簡得求出a, b的值.

 

分類
Javascript

bs_grid動態給定filter rule

bs_grid 是一個很方便的 data grid 功能介面, 可惜沒有支援 bootstrap 4, 不過在 bootstrap 3 下, 非常方便好用. github 連結: https://github.com/pontikis/bs_grid

今天遇到的問題是需要動態下 filter rules, 但在官方資料上, 僅能做預設, 如: https://www.pontikis.net/labs/bs_grid/demo/set-rules/

於是研究一下 github 上的 source code, 其實可以透過動態設定 filter rules 並使用 init 方法來進行動態更新介面, 程式如下:

$("#mygrid").bs_grid('getOption', 'filterOptions').filter_rules.push({
    "condition": {
        "filterType": "text",
        "field": "dataid",
        "operator": "equal",
        "filterValue": [
            "2"
        ]
    },
    "logical_operator": "AND"
});
$("#mygrid").bs_grid('init');

 

如此一來便能進行在動態下新增過濾器功能, 達成所需.

 

分類
程式技術

有趣的iOS上Safari播放mp4問題

今天在測試一個 nginx reversed proxy 上, 代理 upstream server mp4 檔案時的播放問題.

之前沒特別有這個狀況, 但今天開始不能播放(感覺應該是在ios 12.4起發生), 十分有趣, 從 nginx server log 也看不出來原因, 只知道 nginx server 在 ios safari request 時, sent-byte 大小小於原始的 mp4 檔案, 所以也只能從 ios safari 的 developer mode 來著手.

先進行 ios safari developer mode, 可以參考:

https://unrealnavigation.com/blog/web-inspector-with-ios-simulator

然後發現原來 safari 會 request byte-range 0-1 這樣的狀況, 難怪都不會送出完整結果, 這樣一來原因就明確了, 實務上的狀況可以參考這篇:

https://www.stirtingale.com/guides/2018/10/mp4-not-working-cloudflare

若是原本的 server 沒有支援 byte-range 時, 會導致 status 200 而非 safari 預期的 206, 而導致失敗. 接下來就可以來找解決方案.

以 nginx proxy_pass 的反向代理結構來看, 可以利用這個方案:

https://stackoverflow.com/questions/22728016/nginx-is-not-accepting-range-of-bytes

使用 proxy_force_ranges on; 即可.

當然, 原本的 upstream 也需要有支援才能解決.

如此一來, 便能在 ios safari 於 request mp4 資源時, 下達的 byte-range 於快取或未快取內容皆可正常工作.

PS. 於查找過程找到一篇介紹 nginx revered proxy hash key 算法資料可供參考:
https://tomme.me/nginx-proxy-cache-server/

分類
好用軟體

Google Data Studio篩選器中文欄位問題

這個問題很有趣, 在引用 mysql database connection 下的 datasource 時, 文字欄位要下篩選器, 來過濾資料, 發現中文字會篩選不出符合的結果, 英數字是沒問題的.

另外測了使用文字檔上傳的 csv 做 datasource 時, 則沒有這樣的問題.

於是查了一下資料, 有篇文章提到了這個問題與他的解法:

https://www.en.advertisercommunity.com/t5/Data-Studio/Filtering-with-utf-characters/td-p/1198985

居然是使用了 REGEXP_REPLACE 方式來新建立一個 computed field 進行使用, 是可行的, 不過想說用輕量一點的文字函數來試, 如 REPLACE, TRIM 居然都不行, 真是太奇妙了。

詳細的 function 可以參考:

https://support.google.com/datastudio/table/6379764?hl=en

[2020/2/25]
網友 Fion:
https://www.en.advertisercommunity.com/t5/Data-Studio/Filtering-with-utf-characters/td-p/1198985
這篇文章已經找不到了,請問用REGEXP_REPLACE 的方式來解決篩選器問題時,參數應該怎麼下?

[2020/3/2]
回覆:
Hi, 你好, 該連結的確已失效, 這裡簡單說明一下作法, 就是在 [資料來源]這裡, 新增一個欄位, 以原欄位為 name 為例, 新建一個 new_name 的欄位, 把公式設為: REGEXP_REPLACE(name, ‘A’, ‘A’) 即可, 在設定篩選器時, 就可以使用 new_name 這個欄位來應用, 即可順利進行篩選.