Posts

Showing posts with the label IT筆記

IT Notes : Using Google Apps Script to update Google Calendar events from Google Sheet

Image
Steps to update Google Calendar from Google spreadsheet     1. Choose  Calendar for update.   2. Access the Calendar using Google Calendar ID     • var cal = CalendarApp.getCalendarById("xxxxx@gmail.com");   3. Identify the  spreadsheet  containing Calendar event data, e.g.  sheet name =  GetEvents     • var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GetEvents");    4. Specifiy cells that we want to grab data from     • var dataRange = mySpreadsheet.getRange("B2:C46");     5. Import data from the spreadsheet   var data = dataRange.getValues();     6. Create Calendar events from  spreadsheet  with sheet name =  GetEvents     •  myCalendar.createEvent(myTitle, myStartTime, myEndTime, {location: myLocation, description: myDescription}); Create a Google Sheet with 5 columns  Name of Event, Start date/time, End date/ti...

IT筆記:使用Google Apps Script 監察網站狀況

Image
參考了這個網站( Spreadsheet Dev )的文章,使用 Google Sheet 和改動了一些 Google Apps Script程式碼,用來監察網站的服務是否正常。 步驟如下 :  創建一個 Google 表格電子表格來跟踪網站隨時間的狀態 登錄谷歌賬戶並在瀏覽器輸入 https://spreadsheet.new 來創建新的 Google Sheet 將新的試算表命名為 Web Monitor 並加上四個欄位 "Url " , "Date", "Status", "Load time" 在Google試算表菜單選擇「擴充功能」,Apps Script。 重新命名專案命名為 web monitor 20221216,並創建兩個分別命名為 checkWebsiteStatus 及 SetTimeTrigger的 Google Script。 輸入需要監察網站的地址url及接收電郵的帳戶。 function checkWebsiteStatus() {   let url = " https://www.abovethcloud.com/ ";   // Record time so we can track how long the website   // takes to load.   let start = new Date();   let response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});   let end = new Date();   let responseCode = response.getResponseCode();   let loadTimeMs = end - start;   // Record a log of the website's status to the spreadsheet.   SpreadsheetApp.getActive().getSheetByName("Data").appendRow([url, start, responseCode, loadTimeMs]);   // Se...

IT筆記 : 如何在 Ubuntu 22.04 上的 Nginx 安裝 Let's Encrypt 免費的 TLS/SSL 證書

Image
以前的文章介紹了  Ubuntu 22.04 Linux 中安裝 Nginx web server 在 Namecheap或 Freenom申請註冊便宜或免費的網域 為服務器設置了 DNS 記錄之後便可安裝SSL憑證。 第 1 步 — 安裝 Certbot Certbot 建議使用 snap 包進行安裝。 首先確保已經在Ubuntu 22.04 的 snapd 核心是最新的版本: $ sudo snap install core; sudo snap refresh core 如果以前安裝了舊版本 certbot ,則應在繼續之前將其刪除: $ sudo apt remove certbot 之後可以安裝新 certbot 包: $ sudo snap install --classic certbot 最後,將 snap 安裝目錄中的 certbot 命令鏈接到您的路徑,只需鍵入 certbot 即可運行。 $ sudo ln -s /snap/bin/certbot /usr/bin/certbot  Certbot已經安裝好。 第 2 步 - 確認 Nginx 的配置 Certbot 需要能夠在 Nginx 配置中找到正確的服務器塊,才能自動配置 SSL。 使用 nano 文本編輯器打開您的域的配置文件: $ sudo nano /etc/nginx/sites-available/default 找到現有的 server_name 行。它應該如下所示: ... server_name example.com www.example.com; ... example.com = Web server domain name 如果是,退出編輯器並繼續下一步。 如果不符,更新Nginx config file 以匹配。然後保存文件,退出編輯器,並輸入指令驗證配置編輯的語法: $ sudo nginx -t 如果出現錯誤,重新打開服務器塊文件並檢查是否有任何拼寫錯誤或缺少字符。配置文件語法正確後,重新加載 Nginx : $ sudo systemctl reload nginx Certbot 現在可以找到正確的服務器塊並自動更新它。 接下來,更新防火牆以允許 HTTPS 流量。 第 3 步 — 允許 HT...

IT筆記 : 在 Namecheap或 Freenom申請註冊便宜或免費的網域

Image
 架設網站後 ,需要申請一個價格平宜或免費的網域。較多人會經 Namecheap  申請一個價格平宜的網域,價格平宜或免費的網域也可以經 Freenom 申請。 在Namecheap購買一個一年期的 .com 網域,在輸入首次購買discount code之後,以一個普通的域名為例, 最低價 格會低至US$6,約港幣五十元左右,非常化算! Namecheap與 Freenom的網域名稱申請方法差不多,以下列舉的列舉的例子是在Namecheap網站申請的步驟: 先到Namecheap網站登記了一個新的帳戶,然後搜尋心儀的域名,如果您想要的域名已經被註冊,可以稍微修改一下,然後再搜尋。如果域名並未有人注册,則可以輸入資料,進行註冊手續。 輸入Promotion code 最低價格會減至US$6,約港幣五十元左右,非常化算! 可以選擇使用信用卡或者Paypal付款 在繳付網域年費之前,記緊要順便勾選免費的域名隱私保護(Domain Privacy Protection)。當啟用後會把公開的個人資料替換成隱私保護系統商的聯絡資料,以確保個人資料不會經 Whois 查詢已被公開。  當域名隱私保護啟用後會把公開的個人資料替換成隱私保護系統商的聯絡資料,以確保個人資料不會經 Whois 查詢已被公開。  最後在域名供應商網頁內DNS設定相關伺服器的IP,例如 www 和@ 的IP便完成。

IT筆記 : Ubuntu 22.04 Linux 中安裝 Nginx web server

Image
在 Ubuntu官方網站下載 Ubuntu 22.04 ISO,視乎需要,可選擇Desktop image或者Server install image 的版本,兩者的分別是前者有圖象界面而後者沒有。 如果平時常用windows平台的話,可以採用Virtualbox或者 VMWare 來安裝ISO。 如果使用windows內置的WSL2以來安装則較為簡單,但是功能有少許限制,在這裏不作詳述了! 下載及安裝伺服器版本後再檢查Ubuntu 22.04有沒有更新版本 $ sudo apt update 如要更新可輸入指令更新 $ sudo apt upgrade 檢查時區即是 Time Zone 的設定 使用指令列出可用的時區。 $ timedatectl list-timezones 設置香港時區 $ sudo timedatectl set-timezone Asia/Hong_Kong $ timedatectl 輸入指令安裝 Nginx web server $ sudo apt install nginx  完成安裝後,使用指令顯示Nginx的版本。 $ nginx -v nginx version: nginx/1.18.0 (Ubuntu) 確認Nginx的版本為1.18.0 。 檢視防火牆的設定 $ sudo ufw app list  Output Available applications:   Nginx Full   Nginx HTTP   Nginx HTTPS   OpenSSH  輸入指令容許正常 HTTP traffic 通過 port 80 . $ sudo ufw allow 'Nginx HTTP'  輸入指令查看防火牆狀況 $ sudo ufw status  Output Status: active  To                         Action      From  --...

IT筆記 :Leaflet開源JavaScript地圖學習篇(3)

Image
使用 L.polygon繪畫連接四間酒店的多邊形,四間酒店的名稱及坐標如下: 香港尖沙咀凱悅酒店 : 22.297696623540645, 114.17403305500363 九龍香格里拉 : 22.297349192568806, 114.17705858671009  九龍酒店 : 22.29592967990824, 114.17179072831338  半島酒店 : 22.295344002650047, 114.17183364365674 例子如下: var polygon = L.polygon([[22.297696623540645, 114.17403305500363],[22.297349192568806, 114.17705858671009],[22.29592967990824, 114.17179072831338], [22.295344002650047, 114.17183364365674]], {color: 'red',weight:8,fillColor:'blue',fillOpacity:1}).addTo(map); Source code modified from Leaflet.Js Essentials by Paul Crickard III : <html> <head><title>Leaflet.js Essentials</title> <<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin="" /> </head> <body> <script src="https://unpkg.com/leaflet@1.7.1/dist/lea...

IT筆記 :Leaflet開源JavaScript地圖學習篇(2)

Image
使用L.circle繪畫圓形,半徑 = 500 m,例子如下: L.circle([22.450669219333417,  114.18014627779849], 500 ,{color: "red", weight: 8,fillColor:"blue"}).addTo(map); 同樣,我們可以用 L.rectangle 函數來繪製矩形,範例如下: var myRectangle = L.rectangle([[35.19738, -106.875],[35.10418, -106.62987]], {color: "red", weight: 8,fillColor:"blue"}).addTo(map); Source code modified from  Leaflet.Js Essentials by Paul Crickard III : <html> <head><title>Leaflet.js Essentials</title> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin="" /> </head> <body> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin="">...

IT筆記 :Leaflet開源JavaScript地圖學習篇(1)

Image
 使用leaflet製作網頁版的地圖,首先引入基本的avaScript 庫(leaflet.js)和一個CSS 樣式表(leaflet.css)。 較為方便的做法就是引用CDN上的版本     <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>     <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" /> 添加一個div容器來顯示地圖 <div id="map"></div> 設定地圖div的高度,可使用pixel或者%,如果沒有設定,地圖會顯現不出來!    #map {         /* configure the size of the map */         width: 100%;         height: 100%;       } 設定地圖的中心點座標及縮放等級。   var map = L.map('map').setView({lon: 114.20847, lat:22.29227},16); 或者 var map = L.map('map',{                 center: [ 22.29227 , 114.20847],                 zoom: 16             }); 在容器中加底圖,添加 OpenStreetMap 地圖圖塊作為範例。       // add the OpenStreetMap tiles     ...

IT筆記 : 通用警報協議/共通示警協議,Common Alert Protocol (CAP)

Image
剛剛收到通訊事務管理局辦公室《緊急警示系統》發放『緊急警示』,大概的意思就是伊利沙伯醫院改為接收新冠患者的定點醫院,建議其他病人不要到伊利沙伯醫院。 大部分國家及地區都建置緊急通告用的通訊網路系統,採用通用警報協議以傳遞各種預警、警報訊息。 通用警報協議 (Common Alert Protocol, CAP) 是建基於XML(eXtensible Markup Language),一個簡單且通用的格式,來傳達、交換各類災害緊急警報與大眾示警。 CAP 標準由結構化信息標準促進組織 (OASIS) 維護,並被國際電信聯盟採用為 X.1303。 延伸閱讀: OASIS Standard Common Alerting Protocol Version 1.2 世界氣象組織(WMO)通用警報協議(CAP)的電子學習資源與課程平台 民生示警公開資料平台 空氣品質下降資料說明 (CAP Alert Message for airQuality) 聯合國國際減災戰略祕書處  (UNDRR) Media Hub Global Disaster Preparedness Center (GDPC) 

IT筆記 :編寫網頁好工具

Image
 近來要處理一些網頁開發的項目,搜集了一些編寫網頁好工具,方便網站之架設。 免費的線上調色工具 https://paletton.com/ 開放原始碼圖像編輯軟件 Paint.NET 線上製作圖片設計軟體 Canva  免費製作專屬Logo軟體  DesignEvo   在線精美背景圖片設計工具 Getstencil 網頁設計資源參考 W3School HTML 代碼、編輯器和生成器 Html.am  CSS 代碼生成器 CSS3 Generator  Web 開發的終極工具 webcode.tools

IT筆記 :KML 開放標準

Keyhole Markup Language (KML ) 開放標準是基於可擴展標記語言 XML(eXtensible Markup Language)語法標準發展而成。KML由地理資訊標準的開放地理空間協會(Open Geospatial Consortium, Inc.)維護發展。 公眾可透過開放格式KML出版及分享地理資訊, KML主要標籤是 <Placemark> • <Point> 描述地標的地理位置 • 其他常用標籤包括 – <name> 顯示的名稱 – <description> 提供地標的描述 延伸閱讀: OGC KML 2.2 開放標準 Introduction to KML

IT筆記 : 使用Wordpress在免費網站託管平台架設網站

Image
有一些大型屋苑,都設立了一個網站方便居民了解法團及管理公司的日常運作。身為業主立案法團管理委員會的一員,都希望法團及管理公司工作能夠具透明化、居民能夠了解最新的資訊並和法團及管理公司保持良好的溝通,法團網站成立其中一個目的就是方便居民就屋苑管理事務,向法團及管理公司提出意見。 由於經費有限,用最少的時間和成本,使用免費的wordpress 主題(Theme) 及外掛程式(Plugins)來製作法團網站,並上載到免費網站託管平台,以便進行測試。 原來提供免費虛擬主機託管網站服務的平台也不少,選擇了「InfinityFree」的網站服務進行測試,初步評估後發現網站網站加載速度慢、及因為使用量過多而被暫時終止服務24小時。使用量的限制似乎時是不透明的,不知道怎樣計算?在「InfinityFree」的平台之下設立Wordpress虛擬主機是方便及容易的,除了上述的缺點之外,作為一個免費的測試平台也是可以接受的! 到「 InfinityFree 」的網站 (https://infinityfree.net/) 註冊一個免費的帳戶。 完成註冊之後進入control panel,選擇 Softaculous installer 安裝 Wordpress。 當WP安裝完成後,就會看到網站的網址 WordPress has been successfully installed at : http://xxxxxx.rf.gd 與後台登入的位置 Administrative URL :  http://xxxxxx.rf.gd/wp-admin/ 如要使用https則需要在control panel安裝相應的 SSL Certificate 證書。 在瀏覽器輸入相關的網址,看到測試網頁。 登入後台,安裝免費的wordpress 主題(Theme) 及外掛程式(Plugins)。 更新頁面的內容及菜單的選項,網站初步設定完成。 如果需要在本地Windows 電腦上安裝Wordpress進行測試,可以下載一套整合Apache網頁伺服器、MariaDB資料庫、PHP和Perl程式語言的架站工具整合包- XAMPP 。 更加簡單的就是下載架站工具整合包 LocalWP 。 延伸閱讀: IT筆記 : 使用 Wordpress 外掛程式設定 Gmail SMTP及 傳送電子郵件