存档

‘Mac’ 分类的存档

释放 Mac 上不用的硬盘空间

2017年10月6日 没有评论

Xcode 每次升级之后变得越来越大,更多版本的 ios,ipad 模拟器和相关 Toolchains 被加到 Xcode 中,事实上对于大部分开发者来说,并不需要这些东西(我仅仅需要用 xcode) 来开发 QT 程序。但是这些无用的文件占用了巨大的空间。因此,需要对他们做清理:

~/Library/Developer/Xcode/DerivedData
存放 Xcode 项目编译过程中的临时文件, 可以安全的删除。
~/Library/Developer/Xcode/Archives
编译的目标文件存放处,删除之。
/Library/Developer/Xcode/iOS DeviceSupport
Xcode 用来 debug ios 开发的文件, 这里我用不到,删除之,如果需要保留这个目录进行 ios 开发,仅保留需要支持的 ios 版本即可。清理该目录可以释放大量空间。
/Library/Developer/CoreSimulator
iphone 和 ipad的模拟器都在这里, 非 ios 开发者完全用不到,删除之。如果需要保留这个目录进行 ios 开发, 仅保留需要支持的 iphone 和 ipad 版本即可。清理该目录可以释放大量空间。
/Library/Caches/com.apple.dt.Xcode
Xcode 存放 Cache 的地方,可以安全的删除。
/Library/Application Support/MobileSync/Backup
ios 设备和 Mac 的同步文件 会放到该文件下,通过 iTunes -> 偏好设置 -> 设备查看管理备份文件,将不用 和过期的删除
/Applications/Xcode.app/Contents/Developer/Platforms
所有苹果设备 (mac,iphone,watchtv)的sdk都在这里,根据需求删除完全不需要的。
$ cd /Applications/Xcode.app/Contents/Developer/Platforms
$ sudo rm -rf AppleTV* Watch* iPhone*

清理该目录可以释放大量空间。

分类: Mac 标签:

重启 Mac OSX 的声卡驱动

2014年1月13日 没有评论

最近不知道怎么回事, 我的 air 总是碰到声卡突然不能工作的情况(虽然概率很小, 但是已经碰到两次了), 每次都需要重启才能工作. 之前用 linux 的时候, 碰到各种 硬件不工作的时候, 都是 “卸载模块 && 加载模块” 来 work around 的, 按理说 OSX 是混合内核的系统, 是比 linux 还要接近微内核架构的牛逼内核, 至少这种方式也能在 OSX 上工作才对, 放狗搜索了一下 OSX 怎么重载驱动模块, 果然找到了:

sudo kextunload /System/Library/Extensions/AppleHDA.kext
sudo kextload /System/Library/Extensions/AppleHDA.kext
分类: Mac 标签:

在 Mac 下配置 Linux Kernel 开发环境

2013年11月11日 13 条评论

自从我的 主要办公环境转到 Mac 下 之后, 我的开发方式经历了从 native –> remote server 的转变. 但在有时公司网络很差, 而周末我在家里又想研究一些非得在 Linux 下运行的程 序的时候, 麻烦就来了. 比如 Linux kernel, KVM 等等.

不过作为一个虚拟机爱好者(QEMU/KVM contributor), 这种事情应该难不倒我才对. 非常不幸, KVM 不支持 OSX, 或者说, OSX 不支持 QEMU 下的某一种 CPU 模拟的加速(KVM,XEN,或 kmod). 直接后果就是, 如果我用 QEMU 原生的 TCG 翻译, 那么性能会差非常多, 多到不能忍受, 躲到 可以放弃节操!

万邦无奈之下, 只好把节操先丢一边, 把 Virtualbox 先用起来再说.

VirtualBox 的官方下载页面 下载安装最新的版本. 再根据个人喜好安装一个 Linux 发行版, 这里为了省事我选择最新的 Ubuntu-13.10. 安装好 Ubuntu-13.10 之后, 照着我之前写的 在 QEMU 上使用 KGDB 调试内核 就没有问题了.

以下策略是为了最小化资源占用所做的配置, 没办法, 我的 Macbook Air 只有 4 GB 的内存, 我还要在虚拟机里面开 QEMU 调试 kernel, 所以不得不省着点用.

策略 1:

务必最小化安装 linux, 什么乱七八糟的 X, unity, gnome 都不要安装, 这样 不仅可以节省大量的空间和安装时间, 还可以节省很多内存.

策略 2:

为了方便调试和开发, 采用 ssh 登陆到 geust 的方式, 由于我用的是 NAT 的网络 模式, 为了能方便地访问虚拟机, 需要做 host <–> guest 的端口转发:

在 设置 –> 网络 –> 端口转发, 添加一条名称为 ssh, 协议是 TCP, 主机端口 3456, 子系统端口 22 的规则, 其他部分留空即可.

这时, 即可以用以下指令直接连接到虚拟机

$ ssh -p 3456 root@127.0.0.1

为了更方便的能连接到虚拟机, 可以把主机的 ssh 秘钥复制到虚拟机的 ssh 配置文件里. 然后在 $HOME/.ssh/config 文件里添加一个配置条目

Host vbox
    HostName 127.0.0.1
    User root
    Port 3456

之后, 就可以直接

$ ssh vbox

就直接连接进入虚拟机了

策略 3

为了节省运行时内存, 减少应用程序的窗口, 可以用 headless 模式打开虚拟机, 并且关闭 rdp. 这类似于 QEMU 的 nographic 模式, 就像用命令行启动 VBOX 一样.

$ VBoxHeadless --startvm ubuntu-13.10 --vrde off

然后, 就可以

$ ssh vbox

PS

我知道有一个叫 vagrant 的东西可以把上述步奏都一次性完成, but:

  • 我没有时间去熟悉他的配置和用法, 编写(寻找)需要的 guest 的配置文件
  • 我完成上诉的结果花了不到 10 分钟.
  • 我现在开始我的开发之旅只需 ssh vbox, 而且资源占用小到不行.

分类: Mac 标签:

Linuxer 的 Mac 叛逃之路

2013年8月24日 12 条评论

本周入手了一台 Macbook air,正式开始了从 Liunx 到 Mac 的叛逃之路.

概况

我始终相信 *unix 是世界上最好的操作系统, 由于 OSX ∈ *nix, 所以 Mac OS 也是 世界上最好的操作系统之一.

由于之前是一个 linuxer, 且我对游戏没有偏好, 所以用 Mac 之后感觉没有太大的变化, 反而它华丽而不失稳定的 UI, 多达 12 小时的续航, 各种对得起业界良心的硬件设计, 无一不深深的震撼着我.

需要克服的困难

除了 Mac OS 不支持 KVM 之外,我暂时想不到有什么困难需要我去克服的,难道是没有 gnome3 (LOL)。

由于不支持 KVM,意味着我以后得去服务器上去开发调试 KVM 相关的东西了。而对于我, 一个 emacser,变化只不过是从 X 环境下的 emacs 换到 terminal 下的 emacs, 某些冲突的快捷键需要重新定义而已。

Mac 的优点

下面是我用了几天之后感受到:

  • 硬件设计无懈可击,这个不需要解释,业界公认
  • 华丽的操作系统,还记得前几年各大 linux 论坛争相模仿 mac 主题的盛事吗, 还记得 ubuntu 的全局菜单吗,还记得 gnome3 画虎不成反类犬 吗?
  • 系统出奇的稳定,从买来到现在我从来没有关过一次机,没有感觉到到卡顿, 虽然 我的 air 开机只要 10S 不到,但是我就是没有关过机。
  • 超常的续航,12小时!不是盖的。(air)
  • 小巧轻便,随时打开随时工作,这篇 blog 的部分内容就是堵车的时候在同事的车里 完成的(air)。
  • 软件的兼容性。这点对中国用户来说可能很重要,我随手到 App Store 上扫了一眼, 什么迅雷,搜狗输入法,Microsoft office,有道词典,QQ,酷狗音乐,PPVT,PPS, 太多说不过来。
  • 与 大部分 GNU 系统完全兼容,这点对我来说太重要了,感觉除了 linux kernel,几乎 所有 Linux 下能跑的软件跑得很欢。甚至有“丧心病狂”的项目想把 linux 发行版除了 内核之外的所有东西移植到 OSX 中,比如 Gentoo Prefix 这货。这货据说可以在 Windows 下也跑得很欢。//其实我从前是一个 gentooer

常用软件

开发类

  • bash 这个太有用了,系统自带
  • xcode 开发基础包,linuxer 必装
  • emacs 没有你我怎么办
  • pip 很奇怪 Mac 居然默认没有安装这个包
  • homebrew 包管理器 // 下面的工具都是通过 homebrew 安装
  • wget/axel 下载工具
  • automake, libtool 软件编译工具
  • proxychains-ng 翻墙工具

其他

  • Safari 自带的浏览器,通过一些伪装,播放视频的时候能达到最好的效果和性能,以后介绍
  • google-chrome 不解释 //发现解决了翻墙问题后,我都不怎么用 google-chrome 了
  • dropbox 跨平台的 “网盘”
  • 搜狗拼音 输入法,不解释
  • 有道词典 其实用的不多,自带的已经很强大了
  • QQ 和非 geek 交流用
  • iTunes 音乐相关,还没有玩转
  • App Store Mac 自带的软件包管理器,由于上面的软件都是经过审查的,所以质量很高

包管理器

相比于 Windows 上软件管理的混乱,这是所有 *nix 的亮点之一, Mac 上也有同样的机制。 我考察了以下的包管理器,对比了一些各自的优缺点:

  • App Store 这个是 mac 官方自带的,血统最纯的,严格来讲和我相说的包管理器没有 太大关系,只是列出来做个参考
  • Fink 据说是基于 Debian 的 packaging tools 开发的,安装的软件都是预编译好的。 里面的软件都太旧。
  • Macports BSD 的 port 的变种,所有东西源码编译,而且这货完全不考虑系统已有的库, 什么依赖都自己重新来编译一遍,大哥,咱是 Air, 硬盘小啊.
  • Gentoo prefix 基于 gentoo,特点就是恨不得把 gentoo 给移植到 osx 上,和上面的 一路货色,据说连 gcc 都要重编。
  • Homwbrew 新秀级选手,一出现就抢占了无数 macports 的地盘,纯 ruby 打造,纯 git 管理,小巧灵活,能用系统的库尽量用系统的,不求最大,但求最好。

经过一番比较,我做了一个艰难的决定,暂时使用 homebrew,根据这两天的使用来看,完全 满足我的需求。

未来如果在 mac 上要经常编译东西的话,我可能会基于 homebrew 重写一个管理器,把 gentoo portage 好的东西整合近来,因为以前用惯了 gentoo,UES 标记这些东西是在是太好用了。

Emacs 配置

默认情况下 Mac 的按键对 Emacs 有一点不友好,主要在于多了一个奇葩的 ‘command’ 键,在终端模式下 ‘alt’ 键被映射到 ‘option’ 键上。

分别解决如下:

alt 的问题

在 Bash 的偏好设置 -> 设置 -> 键盘 -> 使用 option 键作为 meta 键(勾选)

command 键的问题

把以下 lisp code 加入 emacs 的配置文件中,把 command 作为 alt 键。

(when (eq system-type 'darwin) ;; mac specific settings
  (setq mac-option-modifier 'alt)
  (setq mac-command-modifier 'meta)
  (global-set-key [kp-delete] 'delete-char) ;; sets fn-delete to be right-delete
  )

常用快捷键/多点触摸操作

这几天我最常用到的快捷键/多点触摸操作:

键盘快捷键

全局

  • command + tab: 切换程序,类似于 gnome 的 ctrl + tab
  • command + `: 在同一个程序的多个窗口间切换,比如开了多个终端窗口
  • command + m: 最小化窗口
  • command + w: 关闭窗口/标签
  • command + q: 退出程序
  • command + +/-: 放大/缩小 图片/文字
  • command + t: 新建标签
  • command + r: 刷新
  • ctrl + space: 在 Finder 中搜索,太好用了, 类似于命令行的 locate,但不是一个级别的
  • ctrl + F3: 平铺一个程序的多个窗口,类似于 按下 gnome3 的 win 键
  • ctrl + 左/右键: 切换一般程序和全屏程序,类似 android 的多窗口切换
  • ctrl + 上/下键: 四指上推: 平铺桌面中的程序,或者按 F3
  • command + spice: 输入法切换
  • command + ctrl + f: 全屏
  • emacs keyshort: 另外 emacs 的很多快捷键都可以在任何程序下使用,比如在浏览 器里可以 ctrl + a/e

Safari 或者 bash 等

  • fn + 上/下键: up/down
  • fn + 左右键: home/end

多点触摸

全局

  • 四指分开: 显示桌面
  • 四指上推: 平铺桌面中的程序,或者按 F3
  • 四指并拢: 打开 Launchpad,或者按 F4
  • 四指左右滑动: 切换一般程序和全屏程序,类似 android 的多窗口切换
  • 三指拖动: 拖动窗口
  • 两个指头同时轻点: 触发右键
  • 三个指头同时轻点: 选中文字并唤醒词典,太好用了,结合这个加上 startdict

的词典使我弃用有道词典

  • 双指拖移: 上下翻滚
  • 三指拖动文字: 选中文字
  • 从右方边缘向左轻扫: 查看通知中心

Safari 或者其他浏览器中

  • 双指左/右划: 前进/后退
  • 双指张开/闭合: 放大/缩小网页
  • 双指双击: 智能缩放
  • 双指开合: 查过所有标签页,并双指左右拖动来切换

Tips

解决看视频发热过大的问题

我的 air 在播放在线视频时非常发热量非常大, 原因是 Mac 对 flash 的支持不是 很好(好像 windows, linux 系统也一样), 目前有三种办法可以解决这个问题.

三种方法本质都是一样, 都是利用 html5 来播放, 从而避免 flash 的调用, 实践中我 一直使用第三种方法.

使用支持 html5 的视频网站

比如看优酷的时候, 可以使用以下网址: 猛击我, 这个方法的缺陷是并不是所 有的网站都能找到对应的 html5 的页面。

使用插件把转换当前格式

插件地址在: 猛击我, 我还没有试过,不过貌似比较靠谱。

伪装成 iPad 播放

我现在用的就是这种方式,我现在看的视频都是这种方式,经实践,在我的 air 上, 看视频的时候完全没有发烫的感觉,cpu 温度在 10% 左右。

以下是方法:

打开 Safari 偏好设置 -> 高级 -> 在菜单栏中显示“开发菜单”(勾选), 然后在 开发中选择用户代理 -> iPad.

苹果字符的输入

 这个纯属好玩,方法是:

option + shift + k

分类: Mac 标签: