Marketing, SEO, Web trends, Programming tutorial, Web design, and Life event...
SRI (Subresource Integrity) 是一個透過瀏覽器驗證引用的第三方資源,確保內容沒有被串改。
例如,我們常會引用第三方的 CDN 來源,以加快請求的時間。但由於 CDN 來源分散,難以進行定位,若其中一個來源節點受到劫持,可能會發生隨機的劫持,並且難以重複呈現,用戶刷新頁面後,就無法再重現。
Continue ReadingRedis pub/sub 連線一段時間出現訂閱失敗的處理方式
Redis subscribe 在訂閱一段時間可能失敗的情況有兩種, 1. 啟動沒多久就發生超時, 2. 長期才發生的連結斷開
在實際開發過程,兩種方式情境都可以同時設置,處理方式如下:
Continue Reading這裡針對即時通訊架構,即時連線心跳檢測原理是什麼?各種配置機制的好與壞?以及如何提供穩定的連線品質,針對過去一些經驗進行分享~
Continue ReadingRESTful API 介紹及經驗分享
在現在系統開發,RESTful 無疑是 API 溝通的主流之一,在這裏,主要針對我個人對於 RESTful API 使用狀態及理解做一個分享。
REST 是一個設計風格,全名為 Representational State Transfer (表現層狀態轉換)是在 2000 年,由 Roy Thomas Fielding 所提出來的一種軟體架構風格,用於定義資源及管理資源。
RESTful 則是基於 REST 的一種設計風格,而不是原則!
一般API呼叫方式,主要可有兩部分:通訊協議及序列化
Continue Reading開放封閉原則 (Open-Closed Principle (OCP)) 談論的是,軟體開發所使用的類、方法等,應該具備能拓展,且不須透過手動修改。
在開發大型架構(或框架)時,嚴謹遵照這個方式,才能讓架構保持靈活與易擴充性。
實作方式,都是透過抽象的方式來處理:
在今天,我們開發專案多會選擇以OCP拓展的框架,在套件擴充及開發都會比較容易上手。
實際開發過程,如果是一些小專案,則可不必強制解耦合,尚未明確的內容提前被封裝,導致需求變動時,修改的成本會隨之提升。
因此,都會建議在剛開始先將邏輯完成,後續再透過重構方式來做封裝。
Continue Reading如果設定排程執行 php artisan
預設會使用 root 來執行,就會導致產生的 log 檔案會有權限問題。
解決方式,首先關閉 root 產生的排程,開啟排程檔案將執行的程式先註解
crontab -e
接著,用 www-data 身份來設定排程
crontab -u www-data -e
例如,以下設定每三十分鐘執行
30 * * * * php /var/www/html/artisan course:create >> /dev/null 2>&1
以上設定完畢後,先刪掉今天產生的 storage/log/ log 檔案,
將 crontab 排程時間先調整為 1 分鐘,看看是否能正常運作。
Continue Reading在 AWS 的 RDS Instance ,不同方案 CPU跟記憶體 都有差別,因此在預設時,都會針對主機規格幫你配置好可負載的人數,避免Instance崩壞,通常可以針對你的網站預估同時在線人數來推估適用的方案。
首先,先說明關於 RDS 針對使用者連線相關的配置參數。
Continue Reading這裡針對實際運行服務,記錄一些設定技巧
首先,從 Nginx 的設定檔 /etc/nginx/nginx.conf
nginx.conf 通常為了可將多站點的設定檔獨立分存,一般都會有以下設定,指定將某個資料夾的設定檔 include 到 nginx.conf 裡。
Continue Reading虛擬貨幣常見有 BTC(比特幣),ETH(以太幣),以及其他應用在各領域的貨幣,例如,AMB(Ambrosus 琥珀幣 針對生產鏈),AGI (SingularityNET, 針對AI),IOST(Internet of Services),YEE
(可參考 https://www.coingecko.com/zh-tw/%E4%BA%A4%E6%98%93%E5%B9%B3%E5%8F%B0/huobi)
這裡介紹目前常見的虛擬貨幣交易方式進行說明:
Continue ReadingProcess 是電腦中已執行 Program 的實體 每一個 Process 是互相獨立的 同一個 Process 中會有很多個 Thread ,每一個 Thread 負責某一項功能 同一個 Process 底下的 Thread 共享資源,如 記憶體、變數等
在多執行緒中(Multithreading),執行緒屬於同步機制,在同時間運行的執行緒,若兩個執行緒若同時存取或改變全域變數(Global Variable),則可能發生同步(Synchronization)問題。若執行緒之間互搶資源,則可能產生死結(Deadlock)
Coroutine的程式概念, 在1958年由Melvin Edward Conway提出, 是一種類似多執行緒的單執行緒程式概念, 且可以避開多執行緒的race condition問題, 因為他是單執行緒!!!, 所以不會有第二個執行緒來搶著操作.
Coroutine Coroutine 屬於非同步機制,在執行過程擁有自己的上下文,同時具有可暫時儲存上下文的機制,當一個 Coroutine 儲存後,執行完其他任務可在重新進入,並且從上一次執行的狀態繼續進行。這樣的功能讓程式可以達到分段執行。
同執行緒的比較 協程非常類似於執行緒。但是協程是協同運作式多工的,而執行緒典型是搶占式多工的。這意味著協程提供並行性而非並列性。協程超過執行緒的好處是它們可以用於硬性即時的語境(在協程之間的切換不需要涉及任何系統呼叫或任何阻塞呼叫),這裡不需要用來守衛關鍵區段的同步性原語(primitive)比如互斥鎖、號誌等,並且不需要來自作業系統的支援。有可能以一種對呼叫代碼透明的方式,使用搶占式排程的執行緒實現協程,但是會失去某些利益(特別是對硬性即時操作的適合性和相對廉價的相互之間切換)。
Yield Yield 又稱為生成器,也叫作「半協程」,屬於協程的子集。他跟 Coroutine 一樣,都可以分段執行,但兩者還是有差別。首先,Coroutine 可以控制接續執行另一個協成,過某一段時間再切回繼續跑。Yield 只能在呼叫時,被呼叫的對象控制,並且只能在該Yield ,無法跳到其他 Coroutine 。但事實並非這麼絕對,其實可透過一些dispatcher 的模式來透過上層以token等方式控制yield,在邏輯上達到切換到其他 Coroutine 。
Continue Readingsudo lsblk
>>>輸出
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
└─sda1 8:1 0 10G 0 part /
將剩下的空間都分配給 sda1
(注意,這裡 sda 與 1 之間有空格)
Continue Reading解決,Nas 透過靜態路由 Gateway 開通不同網段路由
目前公司有新添購主機,需要將該台主機可開通連結到多個網段,
這裡先說明一下,在內網 192.168.1.42 已經有設定可連結到多網段。
Nas 網路 192.168.1.49 與該台機器位於同網段,因此,只需要在新添購的 Nas 增加靜態路由,
再透過該路由指定 Gateway 的導向路徑到其他網段 (192.168.77.0) 即可
CentOS 安裝 Java 與 Maven 流程
Java環境檢查,若出現 ```-bash:
CVT2HUGO: java: command not found``` 表示未安裝 JAVA
java -version
下載 JAVA
64x
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 -y
java -version
確認是否存在 maven
mvn -version
安裝 Maven3.6
下載安裝包
wget http://ftp.tc.edu.tw/pub/Apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
解壓縮
tar -zxvf apache-maven-3.6.3-bin.tar.gz
移動Maven目錄
sudo mv apache-maven-3.6.3 /opt
修改Maven目录的User/Group为root
sudo chown -R root:root /opt/apache-maven-3.6.3
以 root 身份登入執行以下命令,設置環境變量
cat > /etc/profile.d/maven.sh <<EOF
export M2_HOME=/opt/apache-maven-3.6.3
export PATH=\$PATH:\$M2_HOME/bin
EOF
source /etc/profile.d/maven.sh
確認安裝
mvn -version
Continue Reading