關於網路那些事...

Marketing, SEO, Web trends, Programming tutorial, Web design, and Life event...

Jira Roadmap 簡介

Jira Roadmap 是一個將 Epic 可視化管理介面,適合用於管理大型,需要耗時幾個月的專案,以及不同Groups的 sprints。

Continue Reading

redis 設定Key過期時間 &原理

在Redis 設定 Key 之後,針對一些短期用途的 key (驗證,限時單),可以透過設定過期時間,

設定key的存活時間。

Continue Reading

Redis 清除過期key原理

在Redis 基於性能考量,並不會對每一個過期的key做及時刪除,主要透過以下幾種方式來清除過期的key:

Continue Reading

快速建立 Telegram Bot (入門)

這裡記錄如何快速建立一個 Telegram bot 以及透過 bot 發送訊息到群組。

Continue Reading

推薦 MacOS 的 MySQL Client - Sequel Ace

自從停止發布Sequel Pro更新以來,直到近期終於有一套延續 Sequel Pro 的 MySQL Client 誕生: Sequel Ace

Continue Reading

如何透過 SRI 驗證避免 CDN 劫持

SRI (Subresource Integrity) 是一個透過瀏覽器驗證引用的第三方資源,確保內容沒有被串改。

例如,我們常會引用第三方的 CDN 來源,以加快請求的時間。但由於 CDN 來源分散,難以進行定位,若其中一個來源節點受到劫持,可能會發生隨機的劫持,並且難以重複呈現,用戶刷新頁面後,就無法再重現。

Continue Reading

Redis pub/sub 連線一段時間出現訂閱失敗的處理方式

Redis pub/sub 連線一段時間出現訂閱失敗的處理方式

Redis subscribe 在訂閱一段時間可能失敗的情況有兩種, 1. 啟動沒多久就發生超時, 2. 長期才發生的連結斷開

在實際開發過程,兩種方式情境都可以同時設置,處理方式如下:

Continue Reading

即時通訊架構-心跳檢測原理說明

這裡針對即時通訊架構,即時連線心跳檢測原理是什麼?各種配置機制的好與壞?以及如何提供穩定的連線品質,針對過去一些經驗進行分享~

Continue Reading

RESTful API 介紹及經驗分享

RESTful API 介紹及經驗分享

在現在系統開發,RESTful 無疑是 API 溝通的主流之一,在這裏,主要針對我個人對於 RESTful API 使用狀態及理解做一個分享。

REST 是一個設計風格,全名為 Representational State Transfer (表現層狀態轉換)是在 2000 年,由 Roy Thomas Fielding 所提出來的一種軟體架構風格,用於定義資源及管理資源。

RESTful 則是基於 REST 的一種設計風格,而不是原則!

一般API呼叫方式,主要可有兩部分:通訊協議及序列化

Continue Reading

什麼是 開放封閉原則 Open-Closed Principle (OCP)

開放封閉原則 (Open-Closed Principle (OCP)) 談論的是,軟體開發所使用的類、方法等,應該具備能拓展,且不須透過手動修改。

在開發大型架構(或框架)時,嚴謹遵照這個方式,才能讓架構保持靈活與易擴充性。

實作方式,都是透過抽象的方式來處理:

  • 繼承
  • 介面
  • 依賴注入 …等

在今天,我們開發專案多會選擇以OCP拓展的框架,在套件擴充及開發都會比較容易上手。

實際開發過程,如果是一些小專案,則可不必強制解耦合,尚未明確的內容提前被封裝,導致需求變動時,修改的成本會隨之提升。

因此,都會建議在剛開始先將邏輯完成,後續再透過重構方式來做封裝。

Continue Reading

解決 Laravel 每日建立分隔 log 檔案,出現權限 Permission Deny 問題

解決 Laravel 每日建立分隔 log 檔案,出現權限 Permission Deny 問題

如果設定排程執行 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 避免 Too many connections

在 AWS 的 RDS Instance ,不同方案 CPU跟記憶體 都有差別,因此在預設時,都會針對主機規格幫你配置好可負載的人數,避免Instance崩壞,通常可以針對你的網站預估同時在線人數來推估適用的方案。

首先,先說明關於 RDS 針對使用者連線相關的配置參數。

Continue Reading

實戰 Nginx 設定技巧:連線數與效能

實戰 Nginx 設定技巧:連線數與效能

這裡針對實際運行服務,記錄一些設定技巧

首先,從 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 Reading

理解 程序(Process)、執行緒(Thread)、協程(Coroutine) 、生成器(yield) 差異

Process 是電腦中已執行 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 Reading

GCP 磁碟擴充容量流程 [解決]

查詢磁碟分割

sudo 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

Linux - CentOS7 安裝 VirtualBox

這裡記錄如何在 CentOS7 安裝 VirtualBox

更新 yum

首先更新系統至最新版本

yum update -y

Continue Reading

Linux - FTP vsftpd 安裝及設定教學

Linux - FTP 教學

在這裡記錄一下 Linux CentOS7 安裝 FTP 以及如何建立使用者,並且限制使用者只能訪問家目錄。

Continue Reading

解決,Nas 透過靜態路由 Gateway 開通不同網段路由

解決,Nas 透過靜態路由 Gateway 開通不同網段路由

目前公司有新添購主機,需要將該台主機可開通連結到多個網段,

這裡先說明一下,在內網 192.168.1.42 已經有設定可連結到多網段。

Nas 網路 192.168.1.49 與該台機器位於同網段,因此,只需要在新添購的 Nas 增加靜態路由,

再透過該路由指定 Gateway 的導向路徑到其他網段 (192.168.77.0) 即可

Continue Reading

CentOS 安裝 Java 與 Maven

CentOS 安裝 Java 與 Maven 流程

安裝JAVA

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

確認是否存在 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