調整 Raspberry Pi Swapfile 大小

最近試著在 Raspberry Pi 3 上編譯東西,結果遇到無法 alloc 虛擬記憶體的問題。

Virtual memory exhausted: Cannot allocate memory

查了一下需要調整一下 swapfile 大小。 Raspbian 的 swapfile 設定檔放在 /etc/dphys-swapfile,預設值是

Read More

清理 Xcode 舊垃圾

最近硬碟空間越來越少,因為沒有放任何音樂影片照片,空間吃緊的元兇就是 Xcode 的眾多衍生資料了。

整理一下可以清除的檔案:

Device Support

  • ~/Library/Developer/Xcode/iOS DeviceSupport
  • ~/Library/Developer/Xcode/watchOS DeviceSupport

這個目錄下放的是每個 iOS / watchOS symbolicate crash logs 的資訊,每個版本會有一個獨立的目錄,資料很大,以 iOS 來說至少會有 2G 以上。每次接上 iOS 裝置的時候,如果沒有對應版本的資訊就會自動下載。可以把只留主力開發機的版本就好,有需要的時候 Xcode 會自己下載。

Read More

Mac OSX 的 PATH 設定與 path_helper

這兩天幫一台舊機器升級開發環境,包含了 rvm,homebrew 等,在用 brew doctor 想確認一下有沒有什麼問題的時候,跳出了一個警告如下:

Warning: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:
    git
    git-cvsserver
    git-receive-pack
    git-shell
    git-upload-archive
    git-upload-pack

Consider setting your PATH so that /usr/local/bin
occurs before /usr/bin. Here is a one-liner:
    echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc

簡單說就是在我的 PATH 環境變數中,/usr/local/bin 被放到 /usr/bin 之後,所以我另外安裝的新版工具不會被呼叫到,而是會執行到系統自己帶的舊版工具。

Read More

用 Auto Layout 等距排列元件

本來以為 Auto Layout 可以用類似 @"|-[view1(viewWidth)]-space-[view2(viewWidth)]-space-[view3(viewWidth)]-|" 這樣的語法自動把三個等寬的 view 等距排列的,沒想到沒辦法。要達到這個效果的話,一個做法是把每個 space 真的塞一個空白的 view 進去,調整這個 view 的寬度,就像 @"|-[view1(viewWidth)]-[space1]-[view2(viewWidth)]-[space2(==space1)]-[view3(viewWidth)]-|" ,但這麼做會生出一堆空白 view,怎麼想都很蠢…另外一條路就是針對每個 view 單獨設定 constraint。

Read More

UITableView 的分隔線消失解法

聽說這是 iOS 7 的 bug。

iOS7-separator-disapper.png

我遇到的狀況就像圖中呈現的,在第二和第三個 cell 中間的分隔線不見了。 在 stackoverflow 查了一下,雖然操作法不太一樣,不過問題的根源應該是一樣的,就是 UITableView 在處理 select 事件的時候有問題,會導致分隔線消失。

Read More

在 git repo 中保護 API Key 的方法

在串接各種網路服務的時候,我們會拿到許許多多的 key/token,即使只是要寄個信也需要帳號密碼,不過這些敏感性的資料,極端不建議提交到 repo 中,誰知道那天這些 repo hoster 會不會被攻破,讓 token 被人看光,更別提有些本來就想要 open source 出來的 project。

Read More

重整 Git repo 中的階層關係

一般來說,我們會把專案擺成下面這樣子:

	Projects/
		Proj1/
			.git/
			proj1_readme.md

CVT2HUGO: > ls -la

就是很單純的有個 Projects 目錄,裡面放著所有的專案,然後把 Proj1 做成 git repo。

隨著時間過去,可能會另外有個相關的專案叫 Proj2,然後放置的方式就會像這樣:

Read More