[Dict] Golden Dict 跨平台多格式支援開源字典

Intro Golden Dict官網 Golden Dict GitHub 字典來源 – StarDict Dictionaries 中文字典 – 字典來源 – StarDict Dictionaries 安裝 Windows 直接至官網Download頁面下載即可。 MacOS 官方GitHub Wiki:Early Access Builds for Mac OS X 字典 字典檔的Source可以參考Intro連結。 字典的安裝預設路徑: ./GoldenDict/content 安裝完成後即可Rescan取得進行設定。 MacOS可以進入程式套件資料夾內MacOS/content加入路徑設定掃描

[Apache] PHP + Apache 環境指南 (libapache-mod-php) on Ubuntu

Intro 雖然Nginx已經…如要架設Apache,可以使用Apache mod PHP去介接PHP(目前Apache不使用PHP-FPM)。 安裝 快速LAMP安裝檔 安裝Apache: $ sudo apt-get install apache2 安裝Apache mod PHP $ sudo apt-get install libapache2-mod-php PHP版本切換 Ubuntu Manpage: a2enmod, a2dismod Ubuntu系列使用Aapche指令工具a2dismod與a2enmod切換,省去修改零散設定檔。基本上版本支援已裝的libapache2-mod-php各版本: $ sudo a2dismod php7.0 $ sudo a2enmod php5.6 Apache MOD PHP 設定要至/etc/php/apache2/ Server執行使用者 Apache […]

[Discuz!] 基本架構與環境建置指南 – Discuz!X系列

Intro 原官方網站(Deprecated)目前似乎只介紹到X3.2版本,可以參考Discuz! G雲碼專案或官方論壇,同期已經到x3.4。 各版本Github下載: yidas/discuzx-release PHP 相容 x3.2含以前支援PHP 5.6,不支援PHP 7.0以上 x3.3支援PHP 5.6 / 7.2 升級版本 版本間升級請查詢Discuz!官網確認,以下說明基於Discuz!X系列套件: 查看目前版本 Discuz!X系列版本PHP檔案位置:source/discuz_version.php UCenter版本PHP檔案位置:uc_server/release/release.php 升級版本節點 以下為Discuz升級的版本節點,版本升級範圍只能在每個節點區間內進行,無法一次性跨越升級: 7.2 => X2.0 X2.0 => X3.2 X3.2 => X3.4 目錄與檔案保留 Discuz!X 論壇主程式:覆蓋 repo (程式碼檔案) 後,主程式工具包中 utility/update.php 複製到 repo ./install/ […]

[NodeJS] NodeJS Guide – 基礎環境指南

Intro NodeJS官網 各平台依照指示下載安裝即可。 Get Started 安裝NodeJS:Debian/Ubuntu Installation instructions 撰寫一個app.js檔for web: How do I start with Node.js after I installed it? 按照上述,$ node app.js運行web server。 訪問http://127.0.0.1:3000/,也可以改hostname為內外網IP對外測試。 反向代理 Reverse Proxy 可以使用nginx做反向代理NodeJS App,如上述3000port本地web app,nginx反向代理設定範例如下: server { listen 80; server_name _; location / { […]

[HTTP] Content-Disposition 中文解碼支援所有瀏覽器

Intro 非英文語系檔名下載要支援多瀏覽器需要特別處理一下。 目標是達到Google Chrome, FireFox, Edge, IE以及更多的瀏覽器皆能支援。 Content-Disposition – HTTP | MDN 解決方法 使用filename*並遵循RFC 5987編碼標準即可,格式範例: Content-Disposition: attachment; filename=%E4%B8%AD%E6%96%87.txt; filename*=UTF-8”%E4%B8%AD%E6%96%87.txt; PHP sample code: $filename = rawurlencode(‘中文檔名File測試’); header(“Content-Disposition: attachment; filename={$filename}{$extension}; filename*=UTF-8”{$filename}{$extension};”);

[Web] Nginx limit_req 指南 – ngx_http_limit_req_module

Intro Nginx限制訪問速率模組:Nginx http_limit_req 原理 使用leaky bucket原理(可以稱漏桶原理),桶的概念如下: 桶中存放request (令牌的概念) 桶上方由Nginx照設定速率計算補充request 桶下方提供提取request,即一個Request會消耗掉桶中存放的一個request Nginx對於桶的特性如下: 單一IP對應使用一個桶 limit_req_zone中rate是以request數量回推時間做補充的,依照兩次領取的時差補充相應的量 limit_req中burst即定義桶的request最大存放量,在每個新IP(不在Zone中)進入時會拿到全滿request(burst量)的桶 重啟Nginx會清空Zone,意即所有桶的剩餘Quota記憶清除,重新以全滿計算 比照實際設定,limit_req_zone $binary_remote_addr zone=one:10m rate=6r/m;即每間隔10秒可以得到一個request補充量。以rate=100r/s速率來說明,即每0.01秒得一個request補充量,間距0.1秒計算得10個request補充量; 而limit_req zone=one burst=5 nodelay;則表示每個IP桶最大預存的request量為5,有用掉則需等待補充。 Nginx實際上實作leaky bucket補充的方式可能為Trigger回填間隔補充量方式,本篇僅為概念說明,不代表實際Nginx演算法 Reference Nginx下limit_req模块burst参数超详细解析

[Network] Fail2ban 指南 – 搭配 SSH/Nginx (DDoS、Request Limit)

Outline SSH 設定方針 Nginx 防禦設定方針 Access log Error log by limit_req_zone 進階 Fail2ban log 設定 Email Notifications Intro Fail2ban – Manuals 架構 Fail2ban 是依照設定檔執行過濾,原始設定檔路徑: /etc/fail2ban/jail.conf 如要修改新增可以複製建立成local的設定檔名稱,如有此檔會以此檔優先: /etc/fail2ban/jail.local /etc/fail2ban/jail.d/* Ubuntu Fail2ban 0.9 版本中可以找到預設的/etc/fail2ban/jail.d/defaults-debian.conf,內容是對[sshd]做enabled = true。 所以安裝好後預設即會開啟SSH保護(預設port為22) [過濾器名稱]會對應到/etc/fail2ban/filter.d/過濾器名稱.conf。 參數解析 官方文件 – Options […]

[Network] DNS (Domain Name System) 原理

Outline DNS Wiki Root Name Servers Theory RFC 1034 – Iterative 查詢標準: DNS resolution 順序: Resolution Process (圖片來源:Web Service Principles – DNS) Round-robin DNS Round-robin DNS Wiki (同個 A Record 設定多個 IP Answers) 舉例來說: $ nslookup -type=a a-record-with-2ip.local 8.8.8.8 Server: […]