看板 MAC 關於我們 聯絡資訊
→ Killercat:ram吃得凶跟OS底層API策略比較有關係,很難說好還是不好 04/07 06:57 → Killercat:OSX本來就是傾向於"盡可能放記憶體給程式吃" 04/07 06:57 → Killercat:你記憶體充足那就會無敵順(這應該就是前面同配備osx會比 04/07 06:58 → Killercat:win7表現好的重要原因之一) 不過記憶體不夠就很麻煩 04/07 06:58 → Killercat:尤其osx的swap其實並沒有win的pagefile效率那麼好 :Q 04/07 06:59 → Killercat:不過我選mac當開發用機有幾個很重要的原因分享一下好了 04/07 07:00 → Killercat:1. android device幾乎不用灌driver就能正確驅動 04/07 07:00 → Killercat:2. 相對好用許多許多的unix based terminal 04/07 07:00 → Killercat:3. 最重要的,這trackpad真是讚阿 XDDDDD 04/07 07:00 → Killercat:4. xcode 5. 強迫自己用POSIX標準寫東西 04/07 07:01 → Killercat:不然老實講我是.net c#派的 這個語言真的太棒了 XD 04/07 07:02 → Killercat:算了回一篇好了 XD 04/07 07:08 來分享一下我自己為什麼選擇mac當開發機好了, 順便聊一下普通人對osx記憶體策略的誤解 OSX從10.3以來(我沒記錯的話)記憶體策略一直都是盡可能的最大化使用 他們的想法是"Unused memory is useless memory" 這策略理論上是正確的,至少在大部分的情況下 OSX記憶體策略來講,讓我們打開Activity Manager看一下 他記憶體一共分成四大區塊 : Free, Actived, Inactived, Wired 其中我們"真正"吃到的是Wired跟Actived,差別在於Wired不會被Paged or swapped (也就是不會被寫入硬碟:在WIN的說法叫做虛擬記憶體或者PageFile) 而inactived則是最近quit的一些application占用的記憶體,雖然跟free有點差 但是在大多數的情況你可以當作他等同free 所以其實OSX吃的記憶體恐怕沒有大多數人想的那麼多 XD 但是事實上一個程式吃的wired+actived來講,osx的確是比win7來的多 (尤其VM系列 更是多上不少) 前面提過他的策略是盡可能多吃記憶體換取比較順暢的使用者體驗 這種策略不能說好或者不好,但是優點很明顯,缺點卻一樣明顯 在記憶體充足的場合中這樣是很讚的,但是記憶體不夠的場合就會出現問題 OSX也是吃swap(他的swap檔案在/private/var/vm/ 有興趣的人自己去翻一下) 但是他的swap事實上校能比linux的swap FS差一點 (linux swap吃自家的FS所以... 另外我不知道他跟mkswap搞出的swap效能高低) 而且也比windows的pagefile來的差 加上這種記憶體策略下,很容易就會讓部分常常執行到的東西掉進swap 然後他的swap不良造成速度低下 -- 更慘的是有時候wired不夠就會開始靈異現象 (osx的記憶體吃光光靈異現象在開發上不算少見,lion以後好一點) win7很少有記憶體不夠造成當機或者靈異現象 我家的電腦以前4g, 有一條記憶體偷偷壞掉了所以變成2g我卻不知道 但是雙開VS+TES5只是覺得ㄟ奇怪怎麼電腦便那麼慢 硬碟怎麼老是狂轉 但是就是不會當機或者靈異現象 XD 後來才注意到阿娘威怎麼記憶體剩下2g... osx其實比win7還需要重開機阿(經驗談)... 只是次數都不多就是了 ok上面聊到了OSX的記憶體策略,有優點也有缺點。下面分享一下為什麼我喜歡用osx開發 1. android device幾乎不用灌driver就能正確驅動 我自己是開發android為主的,他對於每支手機或者device幾乎都是插上就能用 linux的話要自己寫usb定義檔(煩) windows的話要灌每家不同廠商的USB Driver 當然,google是有提供一個公版的win usb driver 但是那個不是每隻手機都能用 :Q 2. 相對好用許多許多的unix based terminal 這個不用多說,這幾乎就是我選擇linux/osx而非windows的最大理由 但是osx又有一點比linux好的地方,在terminal裡面,事實上ctrl-v / ctrl-c 這兩個是有特殊意義的,所以linux的terminal剪下貼上非常麻煩 但是osx用cmd-c/cmd-v取代了ctrl,讓terminal方便度增加相當多 3. Trackpad 這可能不是很多人選擇的理由,但是對我這個喜歡拎個電腦到處跑的人來說 有一個能讓我完全不會想外接滑鼠的好cursor操作介面是一個非常亮眼的亮點 即使是我現在我都仍然是買Magic Trackpad外接我的mac 而非mouse 4. xcode 這個不用說,開發iOS非這個不可。不過老實講我自己是很討厭objc的 XD 只是剛好工作也需要開發一些lib for iOS 5. 強迫自己跟別人POSIX標準 這個應該很多人有這種經驗,接手一組code想要重複利用結果發現編譯錯誤一堆 仔細一看裡面居然充斥了一堆win32 api像是CreateThread(...) CSocket... 為什麼不乖乖用POSIX標準的__beginThreadEx跟SOCKET呢(怒吼) 6. (這是設計比較碰的到的問題) OSX的色彩比較正確 這篇前面剛好有人推文提過,請在本版搜尋"螢幕" 老話一句,我個人是C#派,非常喜愛.net。但是即使如此,我還是選擇mac當開發機 雖然在osx不能跑visual studio,不過大不了VM或者用TeamViewer/VNC連線回家寫阿 反正工作來講大多數都還是碰objc跟java比較多 XD 這些經驗跟大家分享一下參考一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.252.25 ※ 編輯: Killercat 來自: 123.192.252.25 (04/07 07:39)
august8585:推這篇 04/07 08:27
darktt: 推這篇+1 04/07 08:52
ak147:教我寫ui+1 04/07 08:53
yuxio: 推這篇++ 04/07 09:52
yuxio: Terminal 環境對我而言真的是最重要的 04/07 09:54
iincho:盡量把記憶體用光不是理由,同樣2G RAM的機器不跑其他東西 04/07 09:54
iincho:Win 7 64-bit和Lion的順暢程度就有差,所以本身OS在記憶體 04/07 09:54
iincho:管理上我不覺得OSX比較優秀..... 04/07 09:55
yuxio:裝個 cygwin 什麼的總是讓人感覺很累贅 04/07 09:55
iincho:另外OSX的unix環境只是相對好用,比不上原版的Linux... 04/07 09:55
iincho:以我的工作環境來說,需要build android image,OSX很麻煩 04/07 09:56
iincho:某些Linux可以用的套件就算給你Mac port也沒救.....XD 04/07 09:57
iincho:這樣我不如直接用Linux就好, 說真的除了XCode以外Mac對我來 04/07 09:57
iincho:說就是拿來收信上網專用....... 04/07 09:58
iincho:除了那個Apple Logo,寫程式弄台Thinkpad灌Linux簡單一點 04/07 09:59
nogard:C# .net 真的做得很好寫... 04/07 10:11
nogard:三樓教我寫ui+1 (咦) 04/07 10:11
yuxio:@lincho,OSX的unix環境是bsd體系的,與linux的gnu體系有差 04/07 10:37
synd:還是要看工作性質,如果要做底層的工作還是Linux比較好 04/07 10:37
pig:什麼叫原版的linux? 你知道linux是什麼東西嗎? 04/07 10:40
Killercat:maa... build Android image on non-case-sensive 04/07 11:00
Killercat:的問題在android前陣子不只是麻煩 根本是bugged... 04/07 11:00
Killercat:不知道現在休的怎樣就是。這個我也是弄個ubuntu在開發 04/07 11:01
Killercat:反正也不常寫這東西 睜隻眼閉隻眼嚕 04/07 11:01
iincho:嘿..有人問我之不知道什麼是Linux...:p 04/07 11:01
iincho:其實不只啦,minicom在iTerm底下也怪怪的,總之小問題很多 04/07 11:01
iincho:我朋友做底層的買了一台MBP之後還是乖乖換回Thinkpad.... 04/07 11:02
Killercat:不過說真的 常用的東西port跟homebrew找不到還滿難的 04/07 11:02
Killercat:連冷門到不行的wireshark都有人幫port了.... 04/07 11:02
iincho:說Mac寫程式好用的大概就是寫App的吧,其實我覺得你說寫 04/07 11:02
Killercat:寫linux(如kernel層級的東西)當然還是用linux 包含\ 04/07 11:03
iincho:POSIX程式,反過來說這種程式在Windows上也是難用的要命... 04/07 11:03
Killercat:dalvik VM :Q 這個沒話講,不過畢竟開發者app層占多數 04/07 11:03
Killercat:現在移植性越來越重要了 沒POSIX很多東西都沒辦法移植 04/07 11:04
iincho:我的習慣是自己包Middleware,哪個平台就用那個平台的API.. 04/07 11:04
Killercat:想移植到JNI-Android不行 移植到objc不行 什麼都麻煩orz 04/07 11:04
Killercat:而且重點是 已經幾乎沒有人用win32 api了... 04/07 11:05
iincho:BTW, 我前兩天寫Python才碰到MySQLdb安裝的問題... 04/07 11:06
iincho:網上找了一下OSX底下安裝那種長長一串步驟只能說..@%#@% 04/07 11:06
Killercat:寫這種東西碰到這種麻煩 直接去ec2開個免費的instance 04/07 11:07
Killercat:ssh進去寫就好了 XD 04/07 11:07
Killercat:像我就是直接去ec2開 還有一個免費的public ip 多好 04/07 11:07
Killercat:你說真的純底層coding osx畢竟不是linux 也不用勉強自己 04/07 11:08
Killercat:去用他就是,上次要改個ia32-libs source code都不知道 04/07 11:09
iincho:OSX在寫App上也沒有講的那麼神就是了,最多是看起來爽一點 04/07 11:09
Killercat:怎麼下手 後來靈光一閃 靠杯 去ec2改不就好了 04/07 11:09
Killercat:我沒神話他吧 就只是好用而已 04/07 11:09
iincho:不過你說的好處基本上和Linux一模一樣啊..XD 04/07 11:10
iincho:除了那個trackpad以外想不出有什麼獨特的地方... 04/07 11:10
Killercat:友嗎 1 2 3 4 6都是osx才有的阿 04/07 11:11
iincho:我自己在MBP上大概就iTerm+Eclipse混用,但是相對來說 04/07 11:11
Killercat:6我不敢說linux有沒有 不過ps等軟體沒linux版倒是真的 04/07 11:12
iincho:我在Linux上完全可以做一樣的事,而且機器還比較便宜... 04/07 11:12
Killercat:花錢買來就是用3年阿 吃飯東西爽度不能省 真的 04/07 11:12
iincho:3, 4, 6算OS獨有的,但是程式設計師通常不管6, 4你要寫OSX 04/07 11:13
Killercat:對我來講生財工具多付一點讓自己工作爽一點 就是讚 04/07 11:13
yuxio:6是osx的好處,比較不算在osx寫code的好處XD 04/07 11:13
iincho:或是iOS才用得到, 3的話基本上我根本不大動滑鼠... 04/07 11:13
Killercat:我知道有些人很習慣用terminal + vim寫code(我以前就是) 04/07 11:14
iincho:我回一篇好了..XD 04/07 11:14
Killercat:以前還geek到用lynx去看網頁 XD 04/07 11:14
Killercat:但是後來想想幹嘛那麼類 orz 04/07 11:14
yuxio:看網頁要用w3m才是王道啊 04/07 11:15
yuxio:現在的網頁資訊很圖像化,用純文字看會很難吸收 04/07 11:16
yuxio:不過裝個vimperator或是vimium倒是不錯用--如果習慣的話XD 04/07 11:17
ak147:原po別再戰了 快交我寫ui啊 你們這些職業級的coder 04/07 12:44
Killercat:等等為什麼我變成很會寫UI的人了(汗) 04/07 14:19