一年过去了

上一学期还是非常忙的……离散数学,算法,计算机组织与结构,形式语言与自动机,都是很难学的科目。
又因为 Typecho 0.9 的一个 bug,结果这半年都没登上 blog,更别提更新文章了……
嗯,升级成功了 Typecho 1.0,终于可以用 Markdown 了~
说起 Markdown,一年之前我还以为那是一种懒得写 HTML 的人喜欢用的异端,现在就比较喜欢了,大概是因为 MacDown 比较好用的原因吧。
其实用 Markdown 也是因为要在 GitHub 上写东西才学的。这一年在 git 上还是提交了很多代码的(虽然大都是 private repository),对 git 也有了一点的了解。感觉 githug 这个项目挺适合用来学习 git 的。由于 git 用的多了,SVN 现在也只用 git-svn 来替代了,同样地,也是一年的时间,就让我从 SVN 的支持者转到了 git,当时的我真是 too young too simple 啊。
快到春节了,祝各位新年愉快~

安装 Arch Linux

嗯,在说安装步骤之前,先说一下机器,已安装 Windows 8.1 和 OS X Yosemite 的 MacBook Pro 15'' (Mid 2014)。
可见大家可以知道这个机子是有很多坑的……
安装步骤大体上是参照了 Arch Linux 安装向导

首先进行磁盘分区及格式化。
为了方便说明,贴一下我的 /dev/sda 分区:

Part. #     Size        Partition Type            Partition Name
----------------------------------------------------------------
   1        200.0 MiB   EFI System                EFI System Partition
   2        380.0 GiB   Apple HFS/HFS+            Customer
   3        619.9 MiB   Apple boot                Recovery HD
   4        128.0 MiB   Microsoft reserved        Microsoft reserved partition
   5        54.9 GiB    Microsoft basic data      Basic data partition
   6        27.7 GiB    Linux filesystem
   7        2.4 GiB     Linux swap

使用 cfdisk 可以进行比较人性化的磁盘分区(类似 DOS 的 fdisk)。
使用 mkfs.[disk_format] 可以对根分区进行格式化(也可以把 /home /boot 之类单分区)

mkfs.btrfs /dev/sda6 -L "Arch Linux"

使用 mkswap 生成 swap 分区,然后 swapon 启用 swap

mkswap /dev/sda7
swapon /dev/sda7

由于我使用 DHCP 访问网络,所以无需配置网络
挂载根分区到 /mnt,安装基本系统

mount /dev/sda6 /mnt
pacstrap /mnt base vim

生成 fstab(挂载配置)
genfstab -p /mnt >> /mnt/etc/fstab

进入 chroot 环境,进行更加详细的配置

arch-chroot /mnt
echo Computer-Name > /etc/hostname
ln -sf /usr/share/zoneinfo/zone/Asia/Harbin /etc/localtime

去掉 /etc/locale.gen 中你想要的 locale 的注释
建议保留 zh_CN.UTF-8 zh_CN.GB18030 zh_CN.GBK zh_CN.GB2312 及 en_US.UTF-8。
设置语言:echo LANG=zh_CN.UTF-8 > /etc/locale.conf
生成 initrd:mkinitcpio -p linux
设置 root 密码:passwd


以上都是一些细节,接下来是重点:安装引导器
先安装必要包:pacman -S grub efibootmgr osprober
挂载 EFI 系统分区(即 ESP):mount /dev/sda1 /boot/efi
安装 GRUB: grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub_uefi --recheck
生成 GRUB 配置:grub-mkconfig -o /boot/grub/grub.cfg


退出 chroot,重启,享受 Arch Linux

exit
reboot

如何进入 OS X?
在启动界面按 c,输入 exit 即可(前提是在 EFI 启动项中,Mac 在 Arch 之后)

我的第一个 OS X App

写第一个 OS X App 的时候,本来是想用 Xcode 做一个标准的 Mac App。(别闹,不会 C++ 怎么写 App)
但是当我随手打开桌面上的 Counter-Strike:Global Offensive 的时候,就不淡定了。OSX 软件 .app 结构真简单

OS X App 的结构很简单
声明各种属性的 Info.plist,其中有启动脚本/二进制程序、软件图标、是否支持 retina 屏幕等属性……
启动脚本和二进制程序存储在 MacOS 目录下
软件图标存储在 Resources 目录下

其中遇到了一个难点就是 icns 图标的生成,下面记录一下制作方法。

1.新建一个文件夹,里面添加如下的 PNG 文件,尺寸看名字。
icon_16x16.png
icon_16x16@2x.png
icon_32x32.png
icon_32x32@2x.png
icon_128x128.png
icon_128x128@2x.png
icon_256x256.png
icon_256x256@2x.png
icon_512x512.png
icon_512x512@2x.png
2.给文件夹添加扩展名 .iconset
3.打开终端,运行命令
iconutil -c icns abc.iconset
输出的 abc.icns 就是输出的图标文件。

还有一个难点就是用系统自带终端启动指定脚本,在 stackoverflow 搜索到了以下方法:
open -b com.apple.terminal someshell.sh

最后打包 DMG,设置背景图片和磁盘图标,在磁盘工具压缩 DMG。
这样,我的第一个 Mac App 就完成了。

嗯,以后再试试 pkg 格式的安装程序怎么制作。

继续阅读 →

OS X 上两款虚拟机 VMware Fusion 和 Parallels Desktop 个人感觉

由于某些原因,需要在 Mac 下运行虚拟机,个人使用了几天,得出了如下感受

VMware Fusion

VMware Fusion 延续了 VMware Workstation 的核心,操作界面则是类似于 OS X 的系统配置页面
优点:Unity 窗模式下口采取简单的区域截图逻辑
缺点:
1. 使用 retina 屏幕时 Unity 模式下窗口文字为正常的 2 倍大小
(OS X 是 2880x1800 分辨率外加 200% PPI 而 VMware Fusion 的 Unity 模式使用 1440x900 分辨率同时使用 200% PPI)
2. 对虚拟 Mac 支持欠佳(简要来说就是要按照黑苹果教程来一遍)

Parallels Desktop

Parallels Desktop 在 Mac 界被称为 OS X 下最好的虚拟机软件
优点:在使用 Mac 虚拟机时,直接将主机的硬件信息传递给虚拟机(免除破解黑苹果步骤)
缺点:
1. 和 VirtualBox 冲突,开启 VirtualBox 后,Parallels Desktop 直接崩溃
2. 看似让体验更加的 Windows 窗口透明在 QQ 软件打开时造成宿主机 CPU 占用过高,严重影响续航

VirtualBox

嗯……这个只是用来跑 Genymotion (Android Emulator) 用的

VMware Fusion 和 Parallels Desktop 在耗电上平分秋色,所以,我在虚拟 Windows 时使用 VMware Fusion,在虚拟 Mac OS X 时使用 Parallels Desktop虽然用的都是盗版(逃)

GitHub 的 Subversion 支持

无意之间发现 GitHub 的版本库中有 Subversion 的检出地址


随手点了一下旁边的帮助链接
发现,GitHub 不仅有基本的 Subversion 检出支持,连提交和新建分支也支持!

这里是 GitHub 对 Subversion 支持的说明:
https://help.github.com/articles/support-for-subversion-clients

这样我们就可以愉快的使用 TortoiseSVN 在 GitHub 上操作了