IRC(Internet Relay Chat)是歷久彌新的網路聊天室協定,因為只需要純文字的 console 模式,搭配指令就能操作聊天室,資深玩家還可以撰寫 Script 或 IRC BOT 機器人,所以迄今仍有不少開發者喜愛;目前許多大型的 Open Source 專案都可以找到專屬 IRC 聊天室。
記得以前經常掛在 IRC 聊天室,在還沒有 P2P 軟體的年代,那時很盛行透過 IRC 交流電影和音樂;我已經有好幾年沒再用過 IRC 了,最近和開發夥伴 smlsun 開始用 IRC 作為討論專案開發的即時聊天室。
於是開始又重回那個 IRC 美好的年代,很多事情可以寫個小程式來解決 : )
由於我們的 Source Code 使用 GitHub 管理,所以每次提交都是用 Git 工具。
例如某次增加新功能,就在 Commit 時設定一段訊息說明:
git commit . -m '加入了 xxx 功能'
git push
雖然其他開發夥伴,只要到 GitHub 的 Project page 就能看到 Commit 訊息,然後儘早做 Pull 更新,避免太多的 conflict 發生;但畢竟這是被動式的通知,除非 Commit 的開發者,自己在聊天室上面大喊:「我推了,快拉!」
但如果開發團隊每個成員,都使用 IRC 聊天室即時討論,這時候就可以讓 GitHub 在每次專案 Commit 時,自動發佈通知到 IRC 聊天室,如此一來所有更新動作就能主動通知每位成員。
由於 GitHub 的 Service Hook 功能很豐富,完成這項需求連一行程式碼都不需要寫,只要到 GitHub Repository 的「Settings / Service Hook」,選擇設定 IRC 功能即可。
以 FreeNode 的 IRC 聊天室為例,所需要填寫的設定資料如下(這些設定參考自 GitHub IRC Service Hook 的說明):
Server: irc.freenode.net
Port: 6667
Room: #ChannelName (聊天室名稱,# 符號可有可無)
Nick: Nickname (訊息發佈使用的匿名,可自訂)
Branch Regexes: (免填)
Password: (進入聊天室的密碼,無則免填)
Ssl: 不用勾
Message Without Join: 打勾
No Colors: 不用勾
Long Url: 打勾
Notice: 打勾
Active: 一定要打勾
先儲存(Update settings)後,就能用 Test Hook 測試訊息發佈是否正確。
在 IRC 聊天室的部份,需要先做一些設定,才能讓 GitHub Service Hook 發出的訊息顯示在聊天內容;這個動作只能由聊天室管理員(通常是第一位聊天室的建立者)設定:
/mode -n
或
/mode #ChannelName -n
之後每次只要有任何開發者 Commit / Push 後,GitHub 就會將 Commit Message 自動發佈到聊天室,讓所有開發成員在收到通知後儘早做 Pull 動作。
*** 2013/01/11 Updated
在使用一段時間後發現 IRC Hook 功能失效,所有訊息都沒辦法正確寫到 IRC 聊天室。再經過不斷追根究底的測試後發現,只要利用 FreeNode 提供的 NickServ 功能,註冊一組給 GitHub Hook 專屬的帳號,就能再度恢復 IRC 訊息發佈。
註冊流程提示:
先自行用 IRC Client 軟體連上 irc.freenode.net,使用 /nick 指令切換暱稱。
/nick mybotname
然後丟出註冊訊息給 NickServ 機器人(設定密碼及信箱)。
/msg NickServ REGISTER password mail@address
接著就會收到 E-Mail 提供一組驗證訊息(XXXXXXXXX是驗證碼)。
/msg NickServ VERIFY REGISTER mybotname XXXXXXXXXX
再調整 GitHub IRC Service Hook 設定:
Server: irc.freenode.net
Port: 6667
Room: #ChannelName (聊天室名稱,# 符號可有可無)
Nick: mybotname
Branch Regexes: (免填)
Password: 填寫密碼
Ssl: 不用勾
Message Without Join: 打勾
No Colors: 不用勾
Long Url: 打勾
Notice: 打勾
Active: 一定要打勾
如果要讓訊息看起來乾淨一點,Long Url 與 Notice 兩個選項可以不要勾。
另外是 NickServ 服務不能重複用同一組信箱,所以在註冊好第一組帳號後,可以利用 NickServ 的 GROUP 指令,陸續增加其它帳號。方法是先用其它暱稱重新登入:
/nick SECONDNAME
再利用第一組帳號密碼取的驗證。
/msg NickServ IDENTIFY 第一組註冊暱稱 密碼
之後再將新登入的暱稱加入同一個驗證群組。
/msg NickServ GROUP
如此一來,兩組暱稱都可以透過 IDENTIFY 指令通過驗證。
由於同一個 IRC 伺服器不能同時用一樣的暱稱登入,所以必須建立不同暱稱給 BOT 用,這樣會比較方便 : )
使用 IRC 作為開發團隊的即時聊天室,還可以有很多種應用,除了自己寫 Script / Bot 擴充功能外,有些軟體專案開發工具也支援 IRC 整合,例如 Jenkins(Continuous Integration 工具)也提供 IRC Plugin,如此一來,聊天室就能有更多專案開發的應用。
訂閱:
張貼留言 (Atom)
-
▼
2013
(133)
-
▼
1月
(50)
- Mac 一定要學的螢幕抓圖技巧,Screenshot cheat sheet for Mac OS X
- Usersnap 類似 Google Feedback 網站使用者意見回饋的雲端服務,支援螢幕擷圖與塗鴉
- Grails 網站整合 Facebook 帳號登入的 Facebook Auth plugin 介紹
- Ubuntu Linux Server 設定 GMail 為系統預設電子郵件服務
- 開啟 Ubuntu Linux Server 的自動系統安全更新與通知
- 使用 tmux 與 tmuxifier 打造 Console 開發環境(比 screen 更棒)
- 免費 Cyberduck 跨平台、支援眾多協定的網路檔案傳輸工具
- Grails 筆記 - 輕鬆實現 JavaScript 最佳化壓縮與靜態資源 CDN 佈署
- 兩個強大的 HTML5 電子書閱讀器,模擬翻頁效果且開放原始碼 Turn.js 與 20things...
- 讓 Ubuntu 的 VIM 程式碼的配色變好看
- Ubuntu Linux KVM 虛擬機器維護與 Guest OS 文字介面安裝
- Foundation 3 優秀的 Reponsive 前端框架
- Twinkle 讓 Java Swing 程式也有漂亮的 Growl-like 系統通知訊息顯示 f...
- 使用 Gradle Application Plugin 快速建立容易發佈的 Java 應用程式
- Grails 2.2 安裝 Local Plugin 的方法
- 解決 Grails Domain Date + MySQL 發生錯誤 Value '0000-00-...
- 建立可以直接執行的 Grails WAR 檔案
- 使用 AES 演算法加密字串,以 Groovy / Java 快速實作
- Grails 好用的 LinkGenerator 與 MimeUtility 隱藏版 Helper
- 多作者共筆以 Markdown 編輯,使用 Mou, Pandoc, XeTex 輕鬆製作 PDF ...
- [筆記] Ubuntu Linux 使用 apt-get 指令移除軟體並清理遺留的垃圾
- 使用 mysqldump, crontab, s3cmd 自動化異地備份資料庫到 Amazon S3...
- 觀點:開發很棒的軟體...五個成功秘訣分享(中譯摘要)
- s3cmd 檔案傳輸速度調校筆記
- Jenkins 使用 IRC Plugin 讓專案 build 訊息自動發佈到聊天室
- [筆記] 使用 Node.js 撰寫 IRC Client / Chat Bot 聊天機器人
- 在 Ubuntu 下使用 nvm 安裝 Node.js 0.4.12 版本
- Ubuntu 12.04 安裝 KVM 虛擬化筆記
- 解決 Ubuntu fd0 錯誤 /dev/fd0 floppy drive
- 【新書介紹】O'Reilly - Killer UX Design by Jodie Moule
- GitHub 使用 IRC service hook 讓 commit 訊息自動發送至 IRC 聊天室頻道
- 獲利時代(Business Model Generation)新書推薦
- 日本來回機票 6000 元有找!樂桃航空低價促銷找便宜機票
- 快速瀏覽 Grails 2.2 新功能
- 買新電腦預算與規格參考整理 2013.01
- 背包客超省錢住宿攻略(002)台南市南門勞工育樂中心
- VirtualBox 調整虛擬硬碟(*.vmdk 或 *.vdi)磁碟容量大小筆記
- Ubuntu Linux Desktop 12.10 多螢幕顯示器設定與消失的 xorg.conf
- 解決 Ubuntu Linux Server 12.04 DNS 設定問題
- 設定 Ubuntu Server 使用純文字畫面開機
- 即刻救援 Grub 無法開機的 Ubuntu Linux 系統
- Groovy 使用 HttpBuilder 簡化 HTTP 網頁資料存取設計
- 網路電話簿!工商黃頁網站蒐集
- 網路爬蟲服務 Grepsr 與 80legs 只要付錢就幫你把資料搬回家
- 棄業日誌(002)人生整理魔法
- 備份(或複製) Raspberry Pi 記憶卡磁碟資料,Mac OS X 指令範例
- 背包客超省錢住宿攻略(001)台北E書漫時尚閱讀概念館
- 棄業日誌(001)走出舒適圈
- Windows 7 SSD 固態硬碟節省系統磁碟用量筆記
- SanDisk Extreme Pro SDHC UHS-I Card 8GB 95MB/s 633...
-
▼
1月
(50)
沒有留言:
張貼留言