[PHP] Yii2 – RBAC原理指南 – Role Based Access Control Guide

Intro Yii RBAC可以整合User Component提供完整的權限控管,官方文件可以參考: Yii2 – Role Based Access Control (RBAC) 概念 RBAC關聯架構 Items分為Role與Module,用Type區分,但皆可直接Assign給User Items裡的Role即為Module的父集合,一個Role可以對多個Modules 一個User可以對多個Items,意即一人可以有多個Role再聯集多個指定Module 在介面概念上,Roles為一區塊可多選,選取或取消將影響Module區塊的Children選項並考慮其他已選Role聯集 RBAC系統架構 User為獨立Component與資料Model,RBAC與之整合 RBAC主要包含assignment(User-items)、items(角色與模組兩種Type)、rules(資料級別規則) RBAC三個Model提供PhpManager(檔案管理)與DbManager(資料庫)載體選擇,皆支援Data Building方法 Data Building提供操作器管理RBAC資料 驗證實作 設定好RBAC後,可以調用yii\web\User::can()做Module驗證判斷。 另外可以搭配ACF做Controller級別驗證,注意ACF中的roles即為RBAC的items: public function behaviors() { return [ ‘access’ => [ ‘class’ => AccessControl::className(), ‘rules’ […]

[Disk] 電腦硬碟原理(MBR/GPT) – Computer Disk Principle

Intro GPT – GUID Partition Table 磁碟分割格式 MBR(512B)與GPT(2048B)為Disk表頭Index,往後才能分割Partition。 磁碟分割區即為該顆磁碟Index,紀錄包含整個磁碟資訊如UUID、Size、Partitions。 透過韌體支援分辨與讀取BIOS/MBR(512B)與UEFI/GPT(2048B)磁碟分割區 Partitions資訊包含start、End、Sector資訊 一般OS啟動時會Cache磁碟分割區,透過Rescan更新 透過Linux dd為理想Byte to Byte對烤工具 大到小Disk copy需捨棄溢位磁區,並對size做矯正,另外UUID會相同,建議修改

[Ubuntu] Ubuntu Desktop Guide – 桌面環境指南

Intro Ubuntu Desktop Grub2 Menu /etc/default/grub: 設為最後一次記憶開機區 # Modify GRUB_DEFAULT=saved # Add GRUB_SAVEDEFAULT=true 指定開機區 # Modify GRUB_DEFAULT=”Windows NT/2000/XP (loader) (on /dev/sda1)” 名稱可從 `grep menuentry /boot/grub/grub.cfg~ 查找 最後Restart: $ sudo update-grub Display Scale $ sudo apt install gnome-tweak-tool $ gnome-tweaks IME […]

[Redis] Memory cache Redis 架設教學指南

Intro Redis 快速安裝檔 安裝 $ sudo apt install redis-server That’s all 進階設定 開啟驗證 新增密碼設定 /etc/redis/redis.conf: requirepass your-password-here Redis驗證僅使用密碼,不需要帳號 Bind IP驗證 /etc/redis.conf: bind 192.168.1.100 10.0.0.1 不支援子網遮罩,不需要就註解掉,自行設防火牆。 管理介面套件 phpRedisAdmin Additoins TTL (Time to live) Redis – TTL key EXPIRE key seconds [ […]

[Postfix] SMTP Mail Server 架設教學指南 – Postfix with Ubuntu

Install | Authentication | DKIM | Relay Server | Maintenance | Mailtools Intro 簡易郵件傳輸通訊協定 SMTP 是什麼? | Cloudflare Postfix Wiki Postfix 為目前 Linux 熱門郵件傳傳輸軟體 (MTA),可供如mail, sendmail (PHP mail底層)作為預設 MTA 以用來發信。 本篇為純送信 Mail Server 應用指南,OS 環境為 Ubuntu 16.04。 Postfix – Ubuntu […]

[PHP] 處理二進制資料 – Binary Data Pack/Unpack

Intro PHP支援二進制的資料處理,應用上在跟低階語言(如C語言)做資料介接就幫上許多。 PHP函式 pack() 封裝 Data to BIN unpack 分析 BIN to Data $bin = pack(“Sa3”, 50, ‘abc’); file_put_contents(‘data.bin’, $bin); $bin = file_get_contents(‘data.bin’); $data = unpack(“SShort/a3Char3”, $bin); print_r($data); Array ( [Short] => 50 [Char[3]] => abc )

[JS][jQuery] Events Hooking – 元件觸發事件開發

Intro JS基本的Callback這篇就不多談,現在主要是開發JS元件的Events Pattern。 例如Bootstrap Modal Events Pattern 以jQuery實作,自定義Event Namespace 利用jQuery Event及jQuery Trigger <a>Ancher</a> <!– jQuery required –> <script> $(“a”).click(function(){ alert(‘Click’); var e = $.Event(“namespace”); $(this).trigger(e); // Or directly `$(this).trigger(“namespace”);` }); $(“body”).on(“namespace”, function(){ alert(‘A’) }) $(“body”).on(“namespace”, function(){ alert(‘B’) }) $(“a”).on(“namespace”, function(){ […]

[Google][API] Error: 這個應用程式未經驗證 (This app isn’t verified)

Intro Google OAuth 應用授權大概在2017-07-18後會遇到以下問題: 這個應用程式未經驗證 這個應用程式尚未經過 Google 驗證。除非你認識且信任開發人員,否則請勿繼續執行。 隱藏進階設定 Google 尚未審查這個應用程式,因此無法確認其是否通過驗證。未經驗證的應用程式可能會對你的個人資料造成危害。 瞭解詳情 前往「yidas.com」(不安全) 解決方法 Google – OAuth Client Verification

[PHP] PHP-FPM Pool Socket (Multi-Sock-User) 設定指南

Intro 情境:想要某個Site的PHP-FPM改變執行使用者(例如Webhook trigger特殊程式) 設定方式 概念上,一個pool sock擁有一組設定,包含執行使用者(user)或群組(group),所以可以利用開立多個pool sock來提供給Web server多種PHP-FPM Conf達到應用。 1. 開立新的pool PHP-FPM Pool設定複製原始www.conf出新的自定義設定檔,將listen sock自定義改掉,讓var/run/php下自動產生新定義的socket,例如/etc/php/7.0/fpm/pool.d/deployer.conf: ; pool name (‘www’ here) [deployer] user = deployer group = www-data listen = /run/php/php7.0-fpm_deployer.sock 設定完後restart PHP-FPM即會自動生成對應的新Sock 2. 提供新的Socket給Web server site 以Nginx為例,換上新的Socket: location ~ \.php$ { […]