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

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

Intro 本篇為純送信Mail Server指南,OS環境為Ubuntu 16.04。 Postfix – Ubuntu (Dovecot SASL) 快速安裝檔 安裝 $ sudo apt install postfix 設定 (Interactive) $ sudo dpkg-reconfigure postfix 或者直接對應設定檔:/etc/postfix/main.cf 基本設定完後,就已經完成基本寄信Relay Server,預設無驗證僅採用mynetworks allowed host。 驗證 Postfix需搭配SASL驗證(對應OS系統使用者帳密),預設使用Cyrus SASL、可選用Dovecot SASL,雖然本篇是純粹寄信(SMTP)不做收信(POP3/IMAP)理當用Dovecot有點多餘,但Dovecot SASL整合個人覺得較方便。 Dovecot SASL 整合 1. 安裝Dovecot Core: $ sudo […]

[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); }); $(“body”).on(“namespace”, function(){ alert(‘A’) }) $(“body”).on(“namespace”, function(){ alert(‘B’) }) $(“a”).on(“namespace”, function(){ alert(‘C’) }) </script>

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