Things Alike Are Not Things the Same
昨天在 PTT 遇到了一個問題,有人想知道為什麼下面的程式碼:
NSString *aString = @"a"; NSString *bString = @"b"; bString = aString; NSLog(@"bString = %@", bString); aString = @"c"; NSLog(@"aString = %@", aString); NSLog(@"bString = %@", bString);
出來的結果是
bString = a aString = c bString = a
主要的問題是,當把 bString 的指標指向 aString 的物件後,當修改 aString 指向物件的值時,不是就等於修改 bString 指向物件的值嗎?為什麼感覺 bString = aString 這行只有把 aString 的值傳遞給 bString,而不是改變指向的物件?
請不要用 Dev-C++
請大家幫忙頂這篇,Dev-C++ 真的該被時代淘汰了… orz
Dev-C++ 是 Bloodshed Software 開發的 C/C++ IDE,其中包含完整的開發介面、專案模板、以及開源的編譯器(MinGW GCC),是對使用 Windows 的程式初學者而言,相當方便又容易上手的開發環境。因為這個原因,很多教學文都會教使用者用這套軟體,取代要錢的微軟官方開發環境 Visual C++。雖然後來微軟也有了免費的 Visual Studio Express,但因為 Dev-C++ 有中文版,還是被很多人繼續推薦。
所以這似乎是一套很優秀的免費軟體,那麼為什麼這篇文章閒著沒事要說服你離開這套軟體呢?答案是,對初學者而言這個軟體當然沒什麼問題,但其實它有一些潛藏的問題,如果你不是學學就算了,想繼續走程式設計,以後勢必會遇到一些麻煩。與其到時候再想一堆辦法解決,甚至中途轉換到其他 IDE 上,不如從一開始就避開這套軟體,省得繞彎路。
Why Don't We Enter But Return
很無聊當有趣的標題,不過管它的。XD
這個話題最近可能會越來越多人有,因為 iPhone 的關係。有用過 iPhone 的人應該會知道,iPhone 的鍵盤上沒有 Enter 鍵,只有一個 Return,但功能是一樣的。
如果你問的話,大部份人會給你的答案應該就是啊那個都一樣啦,只是蘋果搞剛所以換寫法。事實上不是如此,這個 Return 有它的存在原因。顯而易見地,這個寫法當然來自 Macintosh,在 Mac 上「本來應該是 Enter 鍵」的位置上面寫的了兩行,一行是 Enter,一行是 Return。
在 Mac OS X 下使用 7-Zip 壓縮
Why 7-Zip?
當我們要壓縮、解壓縮時都用什麼軟體?大家還在花錢買WinZIP軟體嗎?以下介紹這套全中文介面的7-Zip壓縮軟體,不但操作簡單、速度快,而且還支援常見的ZIP、RAR壓縮格式,重點是7-Zip是免費軟體,不用錢、不用破解。如果公司MIS還在幫你灌沒註冊的WinZIP給你用,趕快把他換掉改裝7-Zip吧!
而對於我們 Mac 使用者而言,好處還多了一些。首先,即使你有受權,WinRAR 是 Windows 軟體,雖然可以用 Darwine 或 CrossOver Mac 來跑,不過總是不太方便。雖然系統內建就有壓縮工具,但不但會包進一些莫名其妙的東西,還使用老舊的 ZIP 格式,不支援萬國碼,不支援分割壓縮,也不支援文件加密。Mac 上也是有原生的 RAR 壓縮軟體,但使用的 RAR 程序有版權疑慮(RAR 官方有 Mac OS X 命令列程式,但正式版仍須付費),加上使用者介面不太好,所以我一直不喜歡用。
因為以上種種原因,我已經完全轉向 7z 壓縮格式,並建議所有 Mac 使用者這麼做。我推薦的程式是 7zX。這是一個拖拉放程式,直接把要壓縮的檔案或檔案夾拖到圖示上,填完跳出來的選項,就會壓好。
可是這樣不夠好。內建的壓縮工具只要在檔案上開輔助選單裡面就有,比起拖拉放還是快一點。幸好 Finder 本身就內建可修改輔助選單的工具,接下來要講的就是,如何把這個功能放到選單裡。
“Go one level up" in Finder
昨天為了藍牙耳機寫了一個切換輸出設備的 AppleScript,驅動系統偏好設定的面板。
因為系統偏好設定面板沒有 AppleScript 指令可以用(這件事本身有點詭異,不過事實如此),所以只好用 System Events 來寫。程式本身是沒什麼問題,不過寫完之後我突然想起前陣子看到的這篇,所以就回去看了一下。
程式本身當然沒問題,不過有幾件事情要澄清一下。System Events 是 AppleScript 的基礎,所以其實這絕對不是 10.5 的新東西,而是從 AppleScript 剛出現時就一直存在。程式是 Leopard only 沒錯,但並非 System Events 本身,而是因為 Leopard 修改了其中的機制。
省略進一步的原理(反正不重要),其實這個作法可以很容易地改寫成 10.4 以下通用版本,只要在最前面加上一行
tell application "Finder" to activate
就行了。在 10.4 以前這是所有 System Events 寫法的必要措施。
調整 Mac OS X 程式語系
問:
請問有人有某某軟體的英文版嗎?我去官網下載回來開都是簡體中文,也找不到可以調的地方,怎麼辦啊?
答:
絕大部分的 Mac OS X 應用程式都內建多國語系,使用哪種語言取決於你的系統偏好設定「國際設定」。