OS

OSX升级失败后的无限菊花

问题现象

10.8.5直接安装10.9 DP7出现错误,重启后无限菊花

Time Machine备份。

开机Command+R 通过磁盘管理工具Reinstall a new copy of OS X无效,因为10.9已是最新版T-T

尝试过将菊花的电脑作为目标磁盘,通过火线连接,挂载到另一台Mac,失败。。

最终解决方案

在其他电脑上制作了一个U盘系统盘(就是将一个完成OS X安装到了U盘),这个比较简单,就是要把U盘设置为GUID分区表,然后将10.9的安装到上边。

然后在菊花的电脑的上开机按Option,选择U盘启动。因为系统完全从这个U盘启动,速度很慢。

进入系统后,可以看到挂载的原硬盘,这时候把10.9的安装镜像copy到原硬盘上。双击开始安装,位置就是原硬盘
大概20多分钟,系统就安装好了,再次进入系统就是崭新的10.9了,而且用户数据都在的。

在OS X上搭建Git服务器

我勒了擦,配置个Git服务器居然浪费了哥一天的时间。各种问题不断。

1.准备

在系统设置-用户和组中,添加一个新的普通用户,名称为git。

在共享中开启文件共享 远程登录 网络共享,设置为允许git访问。

确认pythongit已经安装了。

2.制作公钥

为了省去来回切换用户的麻烦,首先在客户端制作公钥。
客户端可以是同一台机器的其他用户或另外一台机器。我这里用的当前登录用户xujingbao作为客户端。执行以下命令:

1
ssh-keygen -t rsa

提示输入3次,直接打回车就可以了。id_rsa(私钥)和id_rsa.pub(公钥)就生成了,然后把公钥复制到服务器端的/tmp目录下,顺便把名字改了。

1
cp ~/.ssh/id_rsa.pub /tmp/xujingbao.pub

3.安装gitosis

切换到服务端,也就是刚才创建的git用户,安装gitosis;

1
2
3
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis  
sudo python setup.py install

!这里因为git是一个普通用户,执行sudo时会报is not in the sudoers file. this is incident will be reported的错误,所以切换到可以执行sudo的用户,为其添加权限。

1
vi /etc/sudoers

在root ALL=(ALL)ALL下边添加一行 git ALL=(ALL)ALL

4.初始化gitosis
1
sudo -H -u git gitosis-init < /tmp/xujingbao.pub

初始化成功的话,会有以下提示:

1
2
Initialized empty Git repository in /Users/git/repositories/gitosis-admin.git/  
Reinitialized existing Git repository in /Users/git/repositories/gitosis-admin.git/

同时在home目录下会出现一个repositories目录,目录下有一个gitosis-admin.git,那么这个git库就是用来管理所有git库的访问权限的。它有gitosis.conf和一个keydir两个目录,gitosis.conf文件就是权限配置的地方,keydir存放的是所有客户端的公钥,公钥名字必须和配置文件中的member名字对应。

其他修改:

1
2
3
4
5
6
7
//修改post-update的权限
sudo chmod 755 /Users/git/repositories//gitosis-admin.git/hooks/post-update
//
touch ~/.bashrc  
echo PATH=/usr/local/bin:/usr/local/git/bin:\$PATH > .bashrc  
echo export PATH >> .bashrc  
cat .bashrc

这样服务端配置就完成了!

5.gitosis-admin

因为我用xujingbao.pub 初始化了这个库,所以我可以在xujingbao这个用户下clone这个库,然后管理所有的访问权限。

1
git clone git@host:repositories/gitosis-admin.git

打开gitosis.conf,有如下内容:

1
2
3
4
5
[gitosis]  
  
[group gitosis-admin]  //组名 仓库名
members = xujingbao    //成员
writable = gitosis-admin //权限

如果我们新添加一个项目叫test,他的成员有zhangsan,lisi,wangwu,zhangsan和lisi有写权限,wangwu只读,那就添加如下内容:

1
2
3
4
[group test]  
members  = zhangsan lisi wangwu  
writable = zhangsan lisi
readable = wangwu

在本地修改完权限后,需要提交到服务器:

1
git push

在服务端创建库test:

1
2
3
4
cd repositories
mkdir test
cd test
git init --bare   //--bare是必须的

回到客户端在需要git管理的项目目录下进行初始化

1
2
3
4
5
git init
git remote add origin git@host:repositories/test.git 
git add .
git commit -m "commit"
git push -u origin master

这样就把本地的文件推上去了。

zsh配置默认的编辑器

1.打开zshrc

1
vi ~/.zshrc

2.定义一些快捷命令,找到# Customize to your needs…这一行,输入

1
2
alias vi='vim'  # 表示在命令行输入vi 。就打开vim
alias subl = '/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl'

3.输入subl,就可以打开sublime text

1
2
3
alias -s html=subl       # 在命令行直接输入后缀为 html 的文件名,会在 sublime text 中打开
alias -s rb=subl         # 在命令行直接输入 ruby 文件,会在 sublime text 中打开
alias -s txt=vi          # 在命令行直接输入 ruby 文件,会在 vim 中打开

OS X 显示隐藏文件

显示隐藏文件或文件夹
[perl]
defaults write com.apple.finder AppleShowAllFiles YES
[/perl]

不显示隐藏文件或文件夹
[perl]
defaults write com.apple.finder AppleShowAllFiles NO
[/perl]

将文件设置为不隐藏
[perl]
chflags nohidden ~/Library/
[/perl]

使用Uncrustify在Xcode中格式化Objective-C代码

Uncrustify是一个命令行中的代码格式化工具.

在xcode是用Uncrustify的思路是,编写脚本调用Uncrustify,然后创建一个Service指向这个脚本,再为这个Service分配快捷键.

1.安装Uncrustify

[perl]brew install uncrustify[/perl]
brew

2.配置Uncrustify
这里是一个配置好的workflow,将其移动到~/Library/Service, Services可能会找不到,mkdir就可以.
Uncrustify-Objective-C.workflow.tar

[perl]
mv Uncrustify-Objective-C.workflow.tar.gz ~/Library/Services/
cd ~/Library/Services/
tar zxvf Uncrustify-Objective-C.workflow.tar.gz
[/perl]

3.安装针对Objective-C语言的Uncrustify配置文件
uncrustify_obj_c

[perl]
mv uncrustify_obj_c.txt ~/.uncrustify_obj_c.cfg
[/perl]

以上配置木有问题的话,在Xcode中选中一段代码,右键选择Service就可以看到Uncrustify Objective-C选项了.

4.配置快捷键
打开系统设置-键盘-键盘快捷键-找到刚才添加的Service 添加一个快捷键
BC151D2E-4096-4AE6-AEF8-C702BF987557

MacPorts和Homebrew

Mac OS X是基于Unix的操作系统,可以安装大部分为Unix/Linux开发的软件。然而,如果只是以使用为目的,对每个软件都进行手工编译不是很方便,也不利于管理已安装的软件,于是出现了类似于Linux中APT、Yum等类似的软件包管理系统,其中最著名的有MacPorts、Fink、Homebrew等。

grub rescue

grub rescue >set root=(hd0,8) #设置文件路径

grub rescue >set prefix=(hd0,8)/boot/grub #同上

grub rescue> insmod normal

回车以后便是另外一个界面

rescue grub >

继续;

rescue grub> normal

SSD的写入放大 - Write amplification

写入放大(WA)是闪存和固态硬盘之间相关联的一个属性,因为闪存必须先删除才能改写(我们也叫“编程“),在执行这些操作的时候,移动(或重写)用户数据和元数据(metadata)不止一次。这些多次的操作,不但增加了写入数据量,减少了SSD的使用寿命,而且还吃光了闪存的带宽(间接地影响了随机写入性能)。许多因素会影响到SSD的写入放大,下面我就来稍微详细的解释一下。

早在2008年,Intel公司和SiliconSystems公司(2009 年被西部数字收购)第一次提出了写入放大并在公开稿件里用到这个术语。他们当时的说法是,写入算法不可能低于1,但是这种说法在2009年被SandForce打破,SandForce说他们的写入放大是0.5。

基本SSD操作方式: