[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$ { […]

[Encrypt] 區塊加密解密指南(對稱式) – Block Cipher guide

Intro 一般所謂的對稱金鑰演算法,以區塊加密演算法為主,演算法如AES或DES。 區塊加密工作模式:所謂的Mode,如ECB、CBC、PCBC、CFB、OFB和CTR。延伸出初始向量(IV) ECB,CBC,OFB,CFB,CTR和XTS模式僅僅提供了機密性;為了保證加密資訊沒有被意外修改或惡意篡改,需要採用分離的訊息驗證碼,例如CBC-MAC。 認證加密模式(AE,Authenticated Encryption),或稱為authenc,結合了加密和認證的單一模式。AE模式的例子包括CCM,GCM,CWC,EAX,IAPM和OCB。 Mode – 工作模式 最簡單的加密模式為ECB:每個加密塊獨立加密,不須使用IV (亦即相同內文,密文相同) 經典常用的加密模式為CBC:每個明文塊先與前一個密文塊進行互斥或後,再進行加密。在這種方法中,每個密文塊都依賴於它前面的所有明文塊。同時,為了保證每條訊息的唯一性,在第一個塊中需要使用IV。 IV – 初始向量 初始向量(Initialization vector) Padding – 填充 填充(Padding) 部分模式(即ECB和CBC)因塊密碼只能對確定長度的資料塊進行處理,需要最後一塊在加密前進行填充。 CFB,OFB和CTR模式不需要對長度不為密碼塊大小整數倍的訊息進行特別的處理。 實作 OpenSSL指令 // Encrypt with EBC $ openssl enc -aes-256-ecb -in plaintext.txt -out encrypted.txt -k YourSecretKey // […]

[Linux] LVM (Logical Volume Manager) 教學指南

Intro Logical Volume Manager (Linux) 雖然個人不喜用LVM來管理硬碟,但遇上使用LVM的機器還是得適應。 PV基本操作 搜尋PV硬碟 pvscan $ pvscan 顯示PV狀態 pvdisplay $ pvdisplay 建立PV pvcreate $ pvcreate /dev/sdb $ pvcreate /dev/sdb{1,2,3} 移除PV pvremove $ pvremove /dev/sdb VG基本操作 vgscan 搜尋VG $ vgscan vgdisplay 顯示系統VG狀態 $ vgdisplay vgcreate 建立VG $ […]