分類
技術文章 教學 網域名稱

DNS 除錯教學系列文章(1) – DNS 入門

DNS 是一門很容易卻又很容易弄錯的領域,筆者想分享多年來協助客戶處理 DNS 的一些經驗,所以撰寫了這個系列文章。

分類
網域名稱

談 31t.tw DNS 阻斷 – 網域名稱狀態

最近最紅的新聞就是 www.31t.tw 這個網站,因為內容的關係,造成大家熱烈討論,最後因為網站太敏感的關係,被國安局正式要求封鎖。

分類
Gandi.net 技術文章 網域名稱

HTTPS 網頁轉址

最近 Gandi.net 開始支援 HTTPS 的網頁轉址,乍看之下沒什麼,今天剛好有需求,就來設定一下,用了之後才發現,媽阿!這根本賠本吧 XD

分類
最新文章 網域名稱

中文域名怎麼測試 DNS Flag Day?

中文域名怎麼測試 DNS Flag Day 呢?

分類
最新文章 網域名稱

DNS Flag Day 該注意什麼?

最近的大新聞是 DNS Flag Day!我還以為是胡扯,結果查一下還真有這個東西。

分類
GitLab 技術文章 最新文章

Git LFS 原理、大小檔案都適用

Git LFS 是 Large File Storage 的縮寫,主要是讓 Git 能夠處理大型檔案。因為 Git 的設計上都是以文字檔的程式碼為主,而程式碼的大小通常都不會太大,都是很多小型檔案為主。而當其他開發者在使用 Clone 來複製你的專案時,Git 預設會拉下 master 分支內的所東西,其實不只是當前的檔案,還包括了每一個檔案的歷史紀錄,這些東西都會除存在 .git 的目錄裡面。

所以若你將大型檔案 commit 到 master 內,就會發生一場災難,只要所有與此專案相關的人,都必須下載這個檔案,更不用說如果有異動的時候。

可以刪除 Git 內的大型檔案嗎?

可以,你可以參考 高見龍-為你自己學 Git 的內容來刪除這個檔案,並且用 push -f 的方式把遠端的內容也覆蓋掉。但是在你清除之前,其他所有人都還是必須下載整個儲存庫的內容。並且,你確定你能正確清除檔案,而不是把整個儲存庫搞壞?

大型檔案

什麼是大型檔案呢?一般來說,大約 10MB 以上的檔案,應該就算大型檔案,但也不是說你可以塞 100 個 1MB 的檔案,然後抱怨 Git 速度太慢。

其實 Git LFS 並不是處理大型檔案,在 Git 中只有分為 “文字格式” 跟 “二進位” 這兩種檔案類型,文字格式就是常見的程式碼,我們利用一般的筆記比舊可以開啟的檔案;而二進位檔就像是圖片、影片這種 Binary 格式的檔案,必須利用對應的軟體來開啟,而用筆記本開啟文字檔的話,通常都會看到亂碼。

而我們一般的程式碼都是屬於文字格式,Git 可以讀取檔案的內容用 diff 比較差異,而 Git 遇到二進位檔的時候,並不會去讀取檔案內容,所以你不能用 git diff 來看到差異,Git 若是知道這是二進位檔,就會以二進位的方式處理 (直接存入儲存庫、且不能用 diff 之類的工具比較內容)。

.gitattributes

.gitattributes 是用來告訴 Git 此專案要客製化的部份,為什麼要客製呢,因為 LFS 的使用條件就是你必須要告訴 Git,”這個檔案是 LFS 檔,請用 LFS 的方式處理“,但我們不需要自己設定,透過 git lfs 指令操作即可。

其實不只大型檔案,所有的檔案都可以用 .gitattributes 來告訴 Git 該怎麼處理這個檔案。

Git LFS

安裝

請依照 https://packagecloud.io/github/git-lfs/install 的說明安裝 Git LFS。

設定 yum 的 repo.d

設定好 yum 的 repo 之後就可以用 yum search 找到 git-lfs

yum search git-lfs
yum install git-lfs

最後安裝完成之後記得要用 git lfs install 指令讓你的 git 支援 lfs:

git lfs install
OK,這樣就安裝完成,接下來就可以使用 Git LFS。

指令

$ git lfs track 10mb.psd
$ git add .gitattributes
$ git commit -m 'Add PSD file'
$ git push origin master

上述範例中只有第一行是新的指令,其他的都是一般的 Git 指令,是不是很神奇!使用起來一點都不難,你只需要將你要追蹤的大型檔案加入追蹤之後就可以了。

但其實關鍵在於第二行,每一次你 “新增” 一個大型檔案的時候,都要重新用 add 再加入一次 .gitattributes,但異動大型檔案的時候不用。

原理

其實 git lfs track 指令只是增加一行 .gitattributes 的描述,這樣 Git 就知道這個檔案必須使用 LFS 的方式處理,也就是用二進位的方式處理,(也就是什麼都不處理)。

一開始,你的專案中沒有 .gitattributes 這個檔案,然後你用 git lfs track 之後,你會發現有 .gitattributes 並且新增了一行:

$ git lfs track 10mb.psd
Tracking "10mb.psd"
$ ls -a
10mb.psd  .git  .gitattributes
$ cat .gitattributes 
10mb.psd filter=lfs diff=lfs merge=lfs -text

這行 “10mb.psd filter=lfs diff=lfs merge=lfs -text” 就是告訴 Git 在處理 filter、diff、merge 時將 10mb.psd 透過 lfs 的方式處理。而 -text 就是告訴 Git 這不是文字檔 (text 表示文字檔)。

用 git lfs track 追蹤檔案之後,就可以推送到遠端目錄上,你在首次推上去的時候,會要一些時間將大型檔案傳輸到遠端。以 GitLab 為例,推送上去之後,檔案會被標記為 LFS

GitLab 介面

接者,在別的地方 (換一個資料夾就可以),把該專案 clone 下來,你會看到 LFS 檔案變成了一個 130 bytes 的文字檔,只有紀錄一些基本資訊:

$ ls -lha
總計 40K
-rw-rw-r--. 1 haway haway    3  1月 10 21:11 A1
-rw-rw-r--. 1 haway haway   41  1月 10 21:11 .gitattributes
-rw-rw-r--. 1 haway haway  101  1月 10 21:11 index.html
-rw-rw-r--. 1 haway haway  130  1月 10 21:11 Me640x640.jpg
-rw-rw-r--. 1 haway haway 2.7K  1月 10 21:11 README.md
$ cat Me640x640.jpg 
version https://git-lfs.github.com/spec/v1
oid sha256:83557700f78226f0b3b3422f161a0663f55df242152a2a65eaef2c3af052f246
size 28433

然後你需要這個檔案的時候再用 git lfs pull 的方式把大型檔案抓下來。

$ git lfs pull
$ 1/1), 28 KB | 0 B/s                              
$ ls -lh
總計 44K
-rw-rw-r--. 1 haway haway    3  1月 10 21:11 A1
-rw-rw-r--. 1 haway haway  101  1月 10 21:11 index.html
-rw-rw-r--. 1 haway haway  28K  1月 10 21:14 Me640x640.jpg
-rw-rw-r--. 1 haway haway 2.7K  1月 10 21:11 README.md
-rw-rw-r--. 1 haway haway   26  1月 10 21:11 slove-issue-7

所以對於其他 clone 使用者來說,他們若不需要異動大型檔案,就不需要進行 git lfs pull 的動作,於是那個原本的大型檔案會變成一個 130 bytes 的文字檔。即使他 clone 整個 master,也是很小的儲存庫。

Git LFS 的使用無關檔案大小,唯一的重點在於某些檔案你想放在 master 內,或是說必須放在 master 內,而其他人又不需要同步這個檔案的話,就可以使用 LFS 的方式來管理此檔案。


分類
WordPress

WordCamp Taipei 2018 志工心得

我是哈維!WordCamp Taipei 2018 志工至一,能夠參與到 WordCamp 台灣首次的大型活動,非常激動。希望以後小朋友長大之後玩 WordPress 時,會問說:爸!為什麼你照片在 WordCamp 的網頁上?這時候老爸就會說:你看看,你還在喝奶的時候爸就在玩 WordPress 了,來!有什問題可以問我~~(幻想中….

Orz!一開頭就離題~

這次的志工從哪來?如何參與志工?

當然從網路上來~應該說,因為阿竣辦了小聚,認識了很多人,平時就累積了人脈,號召一下,願意幫忙的人很多。更妙的是,WordCamp 官方已經說辦 WordCamp 之前必須先辦六次以上的小聚,現在想想這中間好像也有滿大的關聯,你先透過辦小聚就可以知道當地的能量、志工熱絡、市場生態,其實在每次小聚中,跟大家交流的時刻,都可以知道那一些人會是講師、志工,誰具有什麼專長,在小聚的時候就可以知道了,真的,不騙你!

參加志工的方式很簡單,你只要跟阿竣說:嘿!我想幫忙做 XXX (請帶入你的專長),然後留下聯絡的方式,就好了。你不信?今年的 設計組 就是這樣產生的,Apple Fan 是一個很害羞的女生,她來小聚好幾次,而且也沒什麼主動講話,她只是跟阿峻說她可以幫忙做設計,然後我們就一直灑花 (做得很好的意思)。

WordCamp 吉祥物:WAPUU 設計組草稿

志工就是熱心與主動投身社群事物!

志工該做些什麼事情?

你想做什麼,就可以做什麼!當然偷拐搶騙不能啦。今年的 WordCamp Taipei 2018 大致上的工作分為:贊助、議程、網站、設計、攝影、錄影、現場志工七個方面。每一個大項裡面都要從規劃、公告、執行三個步驟來進行,譬如要規劃贊助的等級、內容、然後公告、找贊助,確定有贊助後執行贊助的內容等,議程也是,規劃有幾軌、多少講師空間、演講時間,公告徵求講者,執行講者安排、聯絡、收集簡報等等,其實每一個細項都充滿挑戰,也滿需要費心力的,所以志工其實很累。

志工可以獲得什麼?

參與討論、燒腦、看著你的 idea 實踐的成就感,你可以獲得跟不認識的人講話的機會,是的!這是你人生中最重要的事情才對,不要覺得這不是什麼好處,人生中除了做商業跟把妹(與被把)之外,其實你很少有機會可以跟不認識的人講話!而且越老越會這樣… 。如果你負責處理講師的事物,會有很多 WordPress 的高手主動寫信給你,問你還有沒有投稿的機會,已經入選的講師,你可以大膽的寫信給他們,若是沒回你,你還可以在內部群組幹橋哭哭。會有一堆你從來不認識的人加你 Facebook,因為他們想與你保持聯繫,而不是你按了加好友而被靜音。

人脈看起來不值錢!但獲得的好處 Z > B!

WordCamp 前,我們做什麼?

D -180 ~ D 45 天,燒腦!前期非常燒腦,大部分做的事情在規劃,譬如要怎麼舉辦會議?主軸是什麼?講師有那一些可以邀請?地點要辦在哪裡?時間什麼時候?贊助有什麼方案?晚宴要吃什麼?下午茶要吃什麼?會眾有多少人?還要擔心主辦人的心裡狀況 (就是主辦人會怕辦不好所以壓力很大)。召集一些衝鋒部隊,開始開會,大家七嘴八舌打嘴砲的方式把會議給 “說” 出來,不論是線上或是線下開會都是燒腦,今年的 WordCamp Taipei 前,有 14 份會議記錄,還不包括各小組織間或是與主辦之間的切磋。

第一次會議記錄,結論:拜大神

要找場地,要場勘 (說實話我一次都沒去 XD)。然後 WordCamp 可是國際活動,只有中文是不能的,要找人翻譯。還要開始想一些行銷層面的東西(還好後來有 Yuli 加入,不然我跟阿峻兩個死宅工程師搞行銷?笑話)。

事情好像都不重要,但沒做壓下來就會很重。

D – 45 ~ D 天,這段時間開始公佈徵求贊助跟講師、網站上線 (那是另一段刻苦銘心的故事),開始會有實際的贊助商跟講師與我們聯絡,贊助商的部份要與他們洽談內容,方式,期望,今年還要特別說明 WordCamp 的 PBC (國際電匯直接贊助到 WordCamp 中心) 等等,會有大量的實際工作要執行,譬如要聯絡講師、網站要設定票卷、徵求的資料要放上網站。還有各項的設計開始有初稿,然後需要一些一些討論等。別說贊助了,光議程我們就建立了 20 個相關文件,從邀請講師、跟講師聯絡的中英文信件範本,投稿後的回覆、通過與拒絕,投稿後的審查、投票、排定時間,場地,內容開源審查等等。我們還在線上會議的時候大家模擬了各種身份的會眾會參與的議程,Eric 代表行銷、Yuli 代表部落客、Erin 代表設計師、哈維跟阿俊代表工程師,然後各去選擇要參加的場次,然後我們評估每場次的參與人數與大家的興趣,調整議程時間、位置,然後再模擬一次,直到我們覺得完美。雖然實際上有場次爆炸,但其實跟預測的差不多呢!

爆滿的 705 教室

Eric & Erin 兩個人搞定所有議程組事物!棒棒!

WordCamp 時,我們忙什麼?

場佈!前一天要場地佈置的像活動會場一樣,但是一樣,要先燒腦,要規劃場佈要做什麼事情,譬如麥克風要先測試,要知道怎用(場務李小胖超屌,現學現賣)。無線網路有沒有通,背板要放在哪裡?贊助商攤位要怎麼擺?桌椅配置要不要改變,每間有多少座位,還有好多設計小物要擺到實際的位置。

是不是,擺的位置很重要 (流口水…)

會眾報到的程序要演練,會眾引導,講師報到程序,報到台志工訓練,便當茶點幾點到,要怎麼擺放,會眾從哪邊走過來吃東西,去哪裡吃東西,垃圾桶放在,都是學問啊!XD

不過我現在已經忘了我當天做些什麼事情?是一種忙碌而導致腦子的間歇性遺忘症嘛?(不想回憶在鬼扯~

WordCamp 後,我們是什麼?

庶民!跟大家一樣,做回普通人(因為當天的志工都是超人)。

影片要剪、講師簡報要再收集、欠錢的尾款要付清、回收的物品要整理(話說還被我丟在旁邊)、不過!感謝所有人的參與。

WordCamp Taipei 2018 讚!


分類
Docker

變更 Doceker image 儲存庫位置

因為當初 / (root) 硬碟空間切太小, 只留了 70G。後來在安裝 K8S 的時候,差一點不夠,後來發現 /home 目錄有 1xxG 就把 docker images 的位置從 /var/lib/docker 移到 /home/docker 內。

分類
教學 最新文章 網域名稱

TTL 是什麼?該設定多久?

TTL 的全名叫做 Time to Live,是 DNS 解析的時候在使用的,主要的作用是設定每一筆紀錄在 DNS 快取伺服器所保留的時間我們常常在設定 DNS 紀錄的時候會有一個欄位叫做 TTL,到底要設定多少呢?這個值,如果你常常在變動 DNS 紀錄的話,有多小就調多小 (要看你的代管商最小能設定多少),反之,如果你沒有常常變動,可以調大一點,單位是秒,若你設定 1800,表示 1800 秒。所以當你變更這筆 DNS 紀錄的時候,要 1800 秒後才會全球生效!

分類
技術文章 最新文章

DNSSEC 壞掉會發生什麼情況?該怎麼修復?

客戶發生實際案例。他在安裝 SiteGround 的 SSL 憑證的時候,裝不進去,SiteGround 的客服回應說域名解析有問題,所以自動安裝的程式無法正常運作。