發表文章

[筆記] Excel 日期欄位快到期提醒

圖片
Excel or GoogleSheets表格需求: 資料建檔日加180天為到期日。 提醒欄位在到期日的前五天顯示"快到期"。 ※ 當日 TODAY() = 2022/11/25 公式: =IFS( TODAY() = D2, "最終日", AND(D2 < TODAY(), YEAR(D2) <= YEAR(TODAY()) ), "過期了", AND(D2 > TODAY() , D2 <= TODAY()+5 , YEAR(D2) = YEAR(TODAY())), "快到期", TRUE, "還很久" )

免費穩定的虛擬主機

圖片
近日看到了網路上關於Heroku將停止免費服務的一些討論,可能有些網友會需要使用其他家的免費服務資源,這裡記錄並分享一下,自己目前有在使用中且穩定運作了五個月以上的免費服務資源。 對於Heroku,曾經好奇而申請了帳號來玩LINE@ BOT,綁了信用卡後,從UptimeRobot的記錄來看,他是很穩定的7x24在運作!因為有許多可取代的免費服務,就解除了信用卡,沒有再繼續使用。 1.  Oracle Cloud Infrastructure (OCI) 非常佛心的服務啊!充足的資源,免費且穩定,需要綁信用卡,不過4C24G的ARM主機很難搶,雖然網路上有很多自動搶服務的教學,但也是有不少被封號的案例,我是手動開到的,挺幸運啊!😎 搶不到也是可以開1C1G的主機使用。 永久免費 的總儲存容量為200G,可依需求分配設定,例如3台主機各60G,對外總流量為10TB。 如果把免費配額都開起來,一共有: 2台 1 AMD CPU 1G RAM,加上1台 4 ARM CPU 24G RAM (或是在免費配額內建立多台,例如開2台2C12G) 的主機。 補充需要注意的地方:Oracle Cloud 服務有30天免費試用,30天之後沒有升級的帳號僅能使用永久免費的服務,包含文章前面述說的這些資源,而我的ARM主機這邊呈現了停用狀態,在刪除之後重新建立又能使用,大家還是要有備份資料的好習慣。 附上近幾個月的費用統計,使用永久免費的服務,過了30天試用期後仍然在正常使用中,沒有費用產生。 2.  alwaysdata 僅有100MB空間,適合輕量的小程式,支援Node.js、Python、PHP、Ruby,自帶SSL,支援FTP、SSH連線,雖然限制比較多,但不用綁信用卡,申請個帳號就能使用了。 帳號需要活躍的使用(每一、兩週要登入管理介面)。 不再繼續使用的服務 3.  evai.pl PHP主機,免費使用有2GB空間/50GB月流量的服務,Cpanel管理面板,支援SSL、沒有廣告干擾,不用綁信用卡,申請個帳號就能使用了,目前在上面運作LINE ChatBOT反應速度是挺流暢的。 在UptimeRobot的記錄,每隔幾天就會有連續短暫的異常,有Connection Timeout、500、403等等的錯誤,幾分鐘後就恢復了, 建議只做測試用途 。 4.  goorm 儲存空間

每天在指定的時間執行GoogleAppsScript

圖片
希望可以透過LINE BOT每天早上(AM 08:00)推送一份數位早報,所以用到了Google Apps Script,設定好專案的啟動程序,符合時間就執行指定的程式碼。 先建立一份試算表,再建立一張工作表,我這裡取名為"設定"。 然後到"工具"→"指令碼編輯器",取個喜歡的專案名稱。 貼上程式碼: function myFunction() { var spreadsheet = SpreadsheetApp.getActive(); //我把試算表內的工作表取名為"設定" spreadsheet.setActiveSheet(spreadsheet.getSheetByName('設定'), true); spreadsheet.getRange('B1').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); var formattedDate = Utilities.formatDate(new Date(), "GMT+8", "yyyy-MM-dd,HH:mm:ss"); var set_time = Utilities.formatDate(new Date(), "GMT+8", "HH:mm"); //若時間與分鐘符合8點整,就執行我的PHP程式 if(set_time === "08:00"){ spreadsheet.getCurrentCell().setFormula('=IMPORTDATA("https://myWeb.url/LinePush.php")'); }else{ spreadsheet.getCurrentCell().setValue("未到檢查時間"); } //這裡只是記錄這個function被執行的時間,可以刪除 spre

PHP對Google 試算表做CRUD

圖片
Google Sheets有API可以做查詢與編輯,近日架設了LINE BOT對話機器人,就利用了Google試算表來做簡單的資料庫,這裡記錄一下 CRUD 的練習程式碼。 那麼要準備什麼東西呢? 有Google帳號,建立一份Google試算表,並且開啟分享(取得試算表ID) 啟用 Google Sheets API  並取得credentials.json檔案(本文就直接用API範例的Quickstart來修改,至於怎麼啟用API網路上有很多精美圖文教學可參考) PHP運作環境 準備好 Google Client Library  (如果你的環境沒有 Composer ,可以先在你的電腦安裝 XAMPP 與 Composer ,取得 Google Client Library 後,做Quickstart範例看看,沒問題再一起上傳到你的空間) 快點開始吧!其實在 Google Sheets API 裡面的Quickstart範例已經有程式碼與步驟了,複製貼上,下個指令取得授權就可以玩。(vendor資料夾與credentials.json檔案的位置要留意一下) 但是!有個重點:這程式碼(如下圖紅框處),有一行程式會造成我們只能讀取而不能刪改資料,請把"_READONLY"刪除掉,我們才能做後續的新增、修改、刪除資料。 如果有把"_READONLY"這幾個字刪除,取得授權時,可以看到多了些讀取以外權限! 而授權後,在quickstart.php資料夾內會多了一個token.json檔案,請保留別刪除了噢!我們來建立一支PHP做個資料查詢試試吧!可以正常運作就準備把整個資料夾打包丟上你的Server囉! 先附上資料查詢的程式碼: <?php require __DIR__ . '/vendor/autoload.php'; $client = new Google_Client(); $client->setAuthConfig('credentials.json'); $client->setAccessType('offline'); $service = new Google_Service_Sheets($c

免費PHP網頁空間InfinityFree

圖片
補充:帳號不明原因被停用囉,被停了兩次,雖然發信反應可以得到重啟,但可以取代的免費服務很多,就不再繼續使用了。 再來記錄一個免費的PHP網頁空間: InfinityFree 特點呢,就像他的名稱一樣,無限大的空間!!以免費的服務來看,雖然有無限的空間與資料庫容量、流量,但並不是真的無限免費爽爽用,還是有些限制存在的: 網速慢了些 Daily Hits 50000/Day (每日瀏覽請求上限) Inode Usage Quota 30000 (文件檔案、資料夾數量不能太多) 只能使用瀏覽器訪問(例如Webhook是無法使用的) CPU使用量超過限制會強制休眠,要等隔天才會醒來(使用量與計算方式不提供查看) 不過這空間(以前是epizy.com)也存活了很久,對於簡單的用途應該是能夠符合使用需求: 無限的子網域 有Cpanel,支援FTP上傳(也有WEB FTP) 每月100% Uptime (使用 UptimeRobot 觀察到的數據) 支援SSL,申請後上傳證書即可(若有自己的DOMAIN,可使用FREE SSL服務) 補充:免費SSL證書服務: GoGetSSL 申請與Cpanel上傳證書 教學 。 看一下滿滿的功能 申請網址  https://app.infinityfree.net/register 一樣是可以上傳個 PHP File Manager 或 KodExplorer 來做檔案管理、編輯,還是要提醒一下,放在免費空間的資料要記得備份噢!

免費PHP網頁空間000webhost

圖片
補充:不明的原因也沒有收到通知,我的帳號已被消失啦, 請謹慎使用 !若是想做些簡單的網頁開發測試,可以替代的免費服務還是有很多選擇噢。 簡單記錄一個用了十幾年的免費PHP空間: 000webhost 可以用來測試、練習一些PHP程式,有簡單的Cpanel主控台、MySQL資料庫、WEB FTP、內建SSL...等常用的功能,網路上已經有很多的介紹文章,我的用途需求是測試PHP,大概說一下要注意的地方: 月流量上限3GB Inode Usage Quota 10000(文件檔案、資料夾數量不能太多) 空間容量300MB 有廣告(右下角會有個小LOGO) 10000 daily visits and 100 unique daily visits 免費的空間不建議用於正式用途 ※補充:第五點,超過每日請求的上限,主機會進入睡眠狀態,他並不會在隔天就醒來,需要發一封E-MAIL請官方幫忙叫醒主機,才會恢復正常運作,所以提到第六點,若用在正式的專案,主機流量太大、請求過量是會導致網站服務無法正常使用的! 讀大學時為了架購物車專案DEMO申請了一個帳號,畢業後擺放了好幾年,偶爾看一下資料仍然存在,但有需要保存的資料還是養成備份的好習慣吧! 雖然限制很多,我覺得還是有值得玩玩的好處: 免費的!(一個帳號可以建立兩個網頁空間) 每月99.989% Uptime (使用 UptimeRobot 觀察到的數據) 有WEB FTP,可上傳檔案後解壓縮,也能新建、編輯檔案 新建站就有SSL證書,可參考 這裡 使用.htaccess檔案來讓網址自動轉為https協定 網站玩壞了有內建的修復工具可自行修復 網速、PHP運作反應不錯!(架設了LINE BOT對話機器人,回應速度很快) 申請網址: https://000webhost.com/free-website-sign-up 免費的服務太久沒有瀏覽的話,會收到Mail告知網站進入休眠囉!需要登入Cpanel去叫醒他,當然也是可以用 UptimeRobot 這類服務來保持他的清醒狀態。 補充 UptimeRobot : 雖然這免費服務最低執行頻率是5分鐘,但我實際用Line BOT訊息推播來觀察是20分鐘左右的頻率。用來保持免費空間的清醒、PHP程式的自動

免費的SSL證書GoGetSSL

圖片
提供免費SSL證書的服務: GoGetSSL 提供許多廠商的證書,多樣的驗證服務,有90天免費的證書可以申請,到期前可再申請。 這裡記錄一下用在免費網頁空間的示範。首先要有一個支援SSL功能的空間,這裡用Cpanel面板測試。 申請網址  https://www.gogetssl.com/dv-ssl/free-ssl/ 看到了GoGetSSL™ Unlimited Trial的$0元售價,點選Try Free SSL進去。 按Next進行下一步做註冊或登入,填資料沒什麼好說的 ... 就跳過啦。 這裡就說說註冊完成後的New Order,還需要準備什麼資料: 在申請SSL的網站建立一個admin帳號信箱 建立一份CSR(Certificate Signing Request) E-Mail帳號請到在Cpanel面板,有個Email Accounts功能,進去建立一組帳號為admin的信箱,透過WebMail登入後測試看看收發信,能否寄出去另一個E-Mail信箱(例如Gmail),確認可以運作即可,不然收不到認證信就沒得玩了。 CSR請到Cpanel面板的SSL/TLS功能內,Configure建立,填寫資料後產生。 好的,回到GoGetSSL看看New Order(續簽選Renewal),把剛剛產生的CSR複製過來貼上,按Validate CSR進行下一步。 Validation Methods驗證方式就選E-mail,下拉選單選擇先前建立的admin信箱帳號,進行下一步 ... 然後又要輸入資料啦!填寫後就可以去等收認證信件囉! 完成E-mail認證之後,證書可以直接在GoGetSSL找到你這一筆的訂單內容,有提供下載,或是寄到認證過的信箱,再把證書內容(文字編輯器可以開啟,例如記事本),貼回Cpanel我們產生CSR的Certificate證書欄位,按上傳存檔就可以啦!也許不會那麼快就生效,泡個咖啡再來看看你的網站吧。😎🍺 快到期的時候會發送Mail通知(GoGetSSL會員的信箱),只是有效期間本來就不多,所以很快就會收到通知提醒,快到期就是再建一筆Order,與上述步驟一樣,沒什麼難度。

[PHP]LineBot應聲蟲

圖片
一隻很簡單的Line對話機器人,來試試吧! 程式碼: <?php //你的LINE Messaging API Channel access token $channelAccessToken = 'Your Channel access token'; $bodyMsg = file_get_contents('php://input'); $obj = json_decode($bodyMsg, true); //接收事件與回復 foreach ($obj['events'] as &$event) { //判斷發生的事件 switch($event['type']){ case 'follow': //加好友時 $message = '您好!我是學人精!'; break; case 'message'; //有訊息時 $message = $event['message']; $message = strtolower($message['text']); //回傳接收到的文字,或是改成要回復的文字 break; } //發送訊息 $PostData = [ 'replyToken' => $event['replyToken'], 'messages' => [ [ 'type' => 'text', 'text' => $message ] ] ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/v2/bot/

將http連線改為https

免費主機申請了免費SSL使用,要讓原本的http(port 80)連線,改走https(port 443),查了一下簡單的做法,可以修改.htaccess來將http改向https連線:

PHP陣列排序

做個PHP的練習筆記:排序及搜尋一組陣列內的號碼... <?php //降冪排序 $arr=array(12,45,89,3,24,55,223,76,22,11,89,2,4,5,28,112,20,434); for ($i = max($arr); $i >= 0; $i--){     if (in_array($i, $arr))         echo $i." "; } ?> <?php //升冪排序 $arr=array(12,45,89,3,24,55,223,76,22,11,89,2,4,5,28,112,20,434); for ($i = 0; $i <= max($arr); $i++){     if (in_array($i, $arr)){     echo $i." ";     } } ?> <?php $num=20; //要找的數字 $arr=array(12,45,89,3,24,55,223,76,22,11,89,2,4,5,28,112,20,434); if(in_array($num,$arr)){     for ($i = 0; $i <= count($arr); $i++){         if($arr[$i]==$num){         echo "第{$i}元素是{$arr[$i]}";         return false;     } } }else{     echo"找不到:{$num}"; } ?>

Chrome 增加 YouTube 外掛功能

圖片
在Chrome利用 Tampermonkey 擴充功能安裝YouTube外掛,可以讓Youtube有更多功能,例如:循環播放、寬高比、下載...等。 以下舊腳本已失效,目前用的是: savefrom.net helper

FamilyShield的DNS服務

圖片
FamilyShield  提供了免費的DNS服務,可以阻擋一些賭博、釣魚、色情...網站,設定方式: 選擇你的設備與作業系統  https://www.opendns.com/setupguide/?url=familyshield ,會有設定教學,或直接輸入設定: