每個人的心裡都有一股小火苗
采访手记 | 寻找Coolfire心中那点小火苗 【人物】8篇文章书就的黑客宗师——Coolfire 【访谈】Coolfire:我就是一个麻瓜世界里的魔法师 【图说】Coolfire (以上文章轉自 安在 微信公众号:Anzer_sh)
采访手记 | 寻找Coolfire心中那点小火苗 【人物】8篇文章书就的黑客宗师——Coolfire 【访谈】Coolfire:我就是一个麻瓜世界里的魔法师 【图说】Coolfire (以上文章轉自 安在 微信公众号:Anzer_sh)
因為 Parallels Desktop 每次換新的版本都要 $$,每次 OSX 更新都要換版本,從版本 6 到 9 後已經對他失去了耐心,網路上一片討伐,也覺得對不起以前被我推薦使用 PD 的朋友,這次升級 Yosemite 後雖然 PD9 升級到最新版本後還是可以用,但準備開始把 PD 的虛擬機都轉到 VirtualBox 上做測試了。發現以前使用網路上的轉換方法需要多做一個步驟,新的方法可以直接轉為 VDI 格式,因此寫這篇文章分享一下方法。 舊的方法如下: 正常的將虛擬機關機,而不要在 Suspend 的狀態操作。 開啟 Parallels 虛擬機存放資料夾,所有虛擬機副檔名應為 .pvm 右鍵點選欲轉換目標虛擬機 -> Show Package Content 找到 .hdd 檔案,一樣右鍵 -> Show Package Content 找到 .hds 檔案複製到 VirtualBox 虛擬機路徑 … (喝杯咖啡去) 打開 VirtualBox 新建虛擬機,使用 “use existing virtual HDD file” 選項 這個方法仍使用 HDD 格式,若想要用 VirtualBox 原生的 VDI 格式 需要轉換… 新的方法: 還是需要定位到 .hds 檔案,然後直接轉換為 VirtualBox 的 VDI 格式: ...
Time Machine 出問題,一直提示空間不足無法成功備份,但是重做後又不會正確刪除到足夠的空間進行備份,手動刪除了幾個檔案還是相同的情況,放著不管結果它自己一個晚上自己不曉得自動重新備份了幾次,早上起來發現機器很燙。 原想刪除掉整個備份重來,從 System Preference/Time Machine 移除掉備份硬碟後發現裡頭的 Backups.backupdb 目錄還在並未釋放,這應該算是『功能』吧,可以避免誤刪備份。試著用基本的 sudo rm -rf -R [backup folder] 指令刪除的時候一直提示 “Operation not permitted”,找了一些資料後用來解決的方法如下,做個簡單的記錄: sudo /System/Library/Extensions/TMSafetyNet.kext/Helpers/bypass rm -rfv [backup folder] 記得把 [backup folder] 改為你自己的路徑 (如:/Volumes/Backup Disk/Backups.backupdb/),我的作業系統是 10.9.4,如果是 10.8 以前的版本請試著找找: /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass Update: sudo tmutil delete [backup folder] 看來是比較新的方法,有說法是 bypass 已經 outdated,不過還是可以用。
補上篇,Go Web 應用程式需要在 Command Line 下啟動,在 Production 環境中我們可以在 Ubuntu 中使用 Upstart 設定為開機時自動啟動,設定如下: file: /etc/init/go-http.conf # Upstart Configuration description "Golang Web App" author "xxxxx xxx" start on (net-device-up and local-filesystems and runlevel [2345]) stop on runlevel [016] respawn exec /path/to/http 然後就可以使用這個指令來啟動: $ sudo service go-http start go-http start/running, process 12537 Upstart 在 Ubuntu like 系統上是預設安裝的應用程式,在其他的 Linux 下可能需要另外安裝。設定好了之後重新開機時就會像一般的 Daemon 一樣自動啟動應用程式。這個設定會在網路已經啟用的狀況下才啟動你指定的程式,對於 Upstart 有興趣深入了解的朋友可以參考這篇:http://upstart.ubuntu.com/cookbook/ 2014/2/15 [補充] Debian 與 Ubuntu 都將支持使用 systemd 而不再用 Upstart, 因此稍晚這篇要改成 systemd 的設定方式。 ...
主要是參考網路上的這一篇:http://www.jeffreybolle.com/blog/run-google-go-web-apps-behind-apache 作者給出了一個簡單的 Go Web 程式: package main import( "http" "log" "os" ) const resp = `<html> <head> <title>Simple Web App</title> </head> <body> <h1>Simple Web App</h1> <p>Hello World!</p> </body> </html>` func handler(w http.ResponseWriter, r *http.Request) { w.Write([]byte(resp)) } func main() { http.HandleFunc("/", handler) err := http.ListenAndServe(":8080", nil) if err != nil { log.Println(err) os.Exit(1) } } 這個 Web 程式主要是監聽 8080 Port,用 go build 之後得到的執行檔可直接作為 Web Server 運行。然後在 Apache 上安裝幾個 Module 後重啟 Apache。 ...
在『系統偏好設定』中已經設定了正確的電腦名稱,可是每次在公司內部連上網路之後打開終端機,命令提示字元上顯示的卻是上一次使用這個 IP 的電腦名稱,如果這一點讓你困擾的話,可以試試下面這個指令修改 HostName: sudo scutil --set HostName [新名稱] scutil 這個命令支持下列的參數: --get pref Retrieves the specified preference. The current value will be reported on standard output. Supported preferences include: ComputerName The user-friendly name for the system. LocalHostName The local (Bonjour) host name. HostName The name associated with hostname(1) and gethostname(3). --set pref [newval] Updates the specified preference with the new value. If the new value is not specified on the command line then it will be read from standard input. Supported preferences include: ComputerName LocalHostName HostName The --set option requires super-user access. 但以我的情況是只要修改 “HostName” 就可以了,其他兩個使用 get 查看都跟我設定的一樣,修改後記得重新開啟 Terminal 或是 iTerm 使其生效。 ...
越來越多軟體開發人員使用 Git 作為版本控制器,可以像 Github 一樣開發協作的整合式版本控制平台的確迎合了許多企業的需求,因此有越來越多企業在內部架設 Gitlab 作為企業內的協作平台。企業內的應用整合 Active Directory 尤為重要,在人員離職的時帳號即被註銷,因此有較大的安全性。並且透過 LDAP 的機制,新進人員不用申請帳號即可設定使用 Guest 權限,讓每個企業員工都可以在 Gitlab 上報 Issue 並對 Issue 進行追蹤,加強了內部使用者與開發人員的溝通管道。 我的 Gitlab 版本選擇為 6.4-Stable,若是其他版本可能需要有其他額外或省略部分設定。 系統首選 Ubuntu 12.04 Server,這應該是大多數人的選擇。 Gitlab 的安裝可以參考官方文件: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md 另外有一份 Tsung 的中文版本可以參考: 將 GitLab 架設 於 Ubuntu 12.04 (Precise) 整個安裝步驟看起來很複雜,其實在 Ubuntu 12.04 下照著說明一步步進行安裝,完全不會碰到什麼難解的特殊情況,我認為 Linux 新手也很容易能夠照說明安裝好一套 Gitlab。我第一次安裝因為網路慢的原因大概花了兩個多小時,後來安裝正式環境的時候大概因為比較熟練,一個多小時就完成安裝了。 針對安裝部分補充說明一下,「第一次啟動網頁要跑比較久」這個問題其實是可以透過 Precompile 解決的,網路上也有人說改 Timeout 值,但是有些比較慢的機器 Timeout 值改很大也沒什麼作用,這還是得從根本用 Precompile 解,直接用下列指令在第一次啟動後做 Precompile: cd /home/git/gitlab; sudo bundle exec rake assets:precompile RAILS_ENV=production 好了,接下來回到正題。 整合 Active Directory 主要是參考網路上的這一篇: ...
本來在 WebDirectHosting.com 有兩個註冊的域名,先前是因為在它的特價期間看上了便宜的價格 (USD$9.7/Year) 才在上面註冊的,接下來幾年的 Renew Domain 費用變成了 USD$10.28,想想也沒有差多少也就一直用下去了。今年網域即將到期之際他們照例發了電子郵件通知,我的付款動作卻一直卡在信用卡驗證的步驟無法進行下去,發信問了 Support 也沒有回復,只好找到另一個 Sales 帳號發過去問,得到的回復是: Hello, please verify all information is entered correctly. If that does not help, please try a different card. 其實在這之前我已經嘗試過 VISA 與 Master Card 了,手上沒有其他的信用卡可以再嘗試,所輸入的資訊也絕對正確,但就是過不了他們網站上信用卡驗證付款的步驟。心急也沒有用,過了幾天再試過也沒有辦法付款,這家公司的服務態度實在讓人不舒服,因此在短暫的調查網路上其他人的使用情況後決定將在上面其他還沒到期的網域名稱轉到 GoDaddy 去了。 轉換的過程也沒那麼順利,發現 WebDirectHosting.com 的轉換機制並不自動,還是透過 Email 詢問才人工把 Transfer Code 發送過來的 (不是完全的 Customer Self-Service)。原來那個待付款的網域平常就沒怎麼在使用,盤算著要放棄了。後來是過期之後有一個月的 Review 期 (這期間沒有付款成功就會被釋放出來讓別人註冊),我剛好在 Review 期再嘗試付款成功了,接下來也準備將它 Transfer 出去。 沒有讓使用者方便的付款,可能就會流失潛在的新客戶,因為購物衝動期會很容易失去。先前在其他網域註冊服務商也發生過付款問題,不過他們很快的發現自身的程式通訊問題也協助我在到期前完成了付款動作,WebDirectHosting.com 的服務則不到位,此狀況易導致現有客群的流失,其實他們可以很容易留下現有客源並將流程自動化躺著賺錢的,若沒有發生這樣的情況我應該會一直在上面 Renew 相同的網域名稱,只不過這已經是『如果』了。
資訊人員都應該瞭解到備份的重要,我們經常在網路論壇上看到各種的災情,每每見到其他人的狀況才想到應該要買個大一點的硬碟並養成備份的好習慣。自從開始使用 Mac 之後使用了它內建的 Time Machine 功能,備份變得更簡單了,不過我用的是外接式的硬碟而不是 Apple 的時間膠囊,因此必須接上外接碟時才能備份無法實時進行備份,其實實時地備份不見得完全是好處,再加上價格與易移動的因素而選擇了使用外接碟方案。 我經常看到同事們在不同的時間進行資料的備份,有時候是在專案緊鑼密鼓進行中的時候,這樣容易會拖慢其他做正事的效率。我建議大家可以嘗試只在星期一做資料備份,每個星期一早晨開啓電腦接上外接硬碟後讓 Time Machine 自動運行,一個星期下來通常需要備份幾十 GB 的資料,然後在備份的同時可以做一些星期一早上通常會做的事,如回復信件、當週專案項目的時間規劃,而不要在電腦上做操硬碟、CPU 的工作。至於只在星期一做備份是因為大部份重要的程式碼通常都已經在版本控制系統上了,有良好習慣的團隊應該都會在一個功能完成的時候都已將程式碼簽入,因此我們進行的備份不用太過於頻繁,大資料的備份時間大概需要一個小時左右,在星期一早上處理文書工作的時間差不多就可以完成備份,時間的搭配剛剛好,而不會浪費處理正事的時間。 這是一個個人時間管理的觀念,因此這邊所指的備份也是針對個人資料,對於伺服器上的資料備份還是要以公司及法律面的政策為準。也許你處理文書工作的時間安排不一樣,你可以試著將備份時間與文書工作時間安排在一起,試試看這樣工作起來是不是更有效率。 不只是備份時間應該要依照需求規劃,許多資訊人員經常在做系統升級、硬碟重整、清除快取類不必要資料等等,其實這些都是造成工作時間碎片化的因素,如果可以好好規劃利用這些時間,就可以將能集中注意力的工作時間節省出來。 PS. 平常沒有備份計劃的朋友可以考慮看看這一篇:Frank 刪除備份檔後的憾事,另外,經常把備份用硬碟與工作機放在一起跟沒有備份是一樣的,整包被偷走的話就知道怎麼哭了。
有這麼多的專案等著進行,感覺上每一個都很急,用什麼量化的方法 (而不是憑感覺) 可以設定專案的優先級,同時又能讓其他部門的同仁理解 IT 部門優先進行專案的邏輯、避免紛爭。 IT 的專案優先順序應該考慮 IT 的部門策略,而這個部門策略則是承自企業的經營策略,看起來會像這個樣子: 企業經營策略 -> 產品/服務策略 -> 部門策略 -> 專案 可以這樣理解:每一年大老闆跟股東們承諾了今年想要達成的目標,下面一層一層的部門就得再承諾自己的目標,用以跟老板的 KPI 結合,一層一層的,當大家都做到自己的承諾,上一層與上上一層的老板也就達到目標了。也就是說我們每時每刻在工作中進行的專案應該要與公司的 策略 綁在一起,在績效評核的時候才會有皆大歡喜的場面出現。 一般我們會用以下這些指標來衡量專案的優先級: 報酬率 (減少支出、增加營收) 開發時間、開發成本、維護成本、困難度/完成風險 法律、規章、安全 公司策略 並對這些指標設定不同的權重來對手上的每個專案進行評分,然後依照分數高低設定出專案的優先級。因此在專案開始的時候請提出需求的使用單位給出相關的效益 (Benefit) 就是為了計算報酬率。有的專案雖然很急,但是報酬率並不高,這種專案很容易就被其他專案刷下去了。每次有新專案進來,給新專案打分後與正在排隊的專案進行比較,決定要把哪個專案拉前或是往後移動。 將上面的方法跟其他部門同事進行溝通,他們就可以體諒及理解為什麼總有別的專案可以插在他們的專案前面運用部門的資源了。 網路上專案管理的文章很多,你也可以建議這篇應該要整理哪些參考連結: Basic Portfolio Management or “Doing the right projects.” Prioritization Matrix – 由於要寫一些在專案上的想法,但是會引用到一些專案相關的知識,因此乾脆就把自己的理解寫出來歸檔方便日後引用。