OS X 支持 NTFS 读写

苹果的 OS X 明明已经支持 NTFS 分区读写, 但是默认情况还是按只读挂载, 查了些资料小修改了下, 就可以开启原生读写了
# 用 root 身份做如下操作 (高危! 请切记自己在干什么)
sudo -s

cd /sbin
# 将系统自带的挂载程序改名
mv mount_ntfs mount_ntfs_orig
# 新建我们要的挂载脚本并编辑
vim mount_ntfs

mount_ntfs
#!/bin/sh
/sbin/mount_ntfs_orig -o rw "$@"

# 保存退出后改一下权限
chmod a+x mount_ntfs
# 都搞定了, 退出 root 身份
exit

不过这个方法还有几个小问题要注意

1. 分区最好有卷标, 默认的 “未命名磁盘” 可能无法挂载. 如遇无法自动挂载可以先在终端下改个名再试
# 获取对应分区的 DiskIdentifier (类似 disk1s1 这样的)
diskutil list
# 分区重命名
diskutil rename disk1s1 newname

2. 网络上其他方法经常会让把脚本里的挂载参数加上 nobrowse, 这个参数就让挂载的分区不显示成新的移动磁盘, 然后又有一堆方法教怎么在 finder 侧边栏能快速访问这样挂载的 NTFS 分区. 其实 man mount 看明白 -o 参数后面的设定就明白了, 去掉那个画蛇添足的 nobrowse 吧

// 最后这个 nobrowse 的参数, 似乎加上后又是只能在 finder 显示但是不能写, 搜了下也没有合理的解释, 如果不行还是先加回去吧
// 为了方便访问, 可以在 finder 里用 cmd+shift+G 打开跳转, 输 /Volumes 进入所有磁盘目录, 然后在用 cmd+shift+T 将 /Volumes 保存到边栏

Mac OS 禁止apache httpd自动启动

mac os不像linux有/etc/init.d/rc.local以及service的方式可以设置程序随机启动,而是使用plist文件管理。
plist文件分布在:/System/Library/LaunchDaemons/中的最多,其中apache的httpd程序启动配置文件org.apache.httpd.plist就在这里。
但这些配置文件可由程序launchctl设置是否加载。也就是说,在launchctl list命令结果中出现的plist文件才会有效。
launchctl需要root权限。
禁止其随机启动方法:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

如果没有任何输出就是成功卸载了。如果要加载,把unload换成load即可。
第二次运行unload会发现错误:launchctl: Error unloading: org.apache.httpd,这表示已经成功卸载了。

如果要查看launchctl用法,可以在shell终端输入launchctl,然后输入help回车。quit退出。

我在我的mac上操作成功,重启后httpd不会启动了。但奇怪的是当我自己用apachectl启动了httpd后,第二天开电脑发现httpd又自动启动了。于是我怀疑是否apachectl脚本里将其load了,打开/usr/sbin/apachectl,发现启动httpd竟然使用了launchctl的load方法。

为了让启动与否的主动权掌握在我自己手里,只好抛弃使用apachectl启动,使用自己写的httpd脚本启动,其实就是里面实现一下start,stop,restart三个条件判断即可,我使用时间长一些,所以稍复杂一些,见附件。

apachectl.tar.gz

替换后,别忘记再运行一次:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Convert .png to .eps on Mac

This is one of those tips that seems almost too easy to be true.

My resume and cover letters are written in LaTeX. LaTeX is a typesetting system often used for creating technical documents as it is particularly good at creating complex documents including scientific equations. I have been using it for a few years to draft documents both because it gives me a lot of control over the output and so that I could prepare myself for working with technical documents such as patents which are likely be written in LaTeX.

I wanted to include my signature in a cover letter. In order to do so in LaTeX, it required a graphic in .eps format. However, my signature was a .png image. I searched for awhile until I came across the answer which was so simple I felt silly for not knowing it.

I thought it may prove useful to someone else. This is a command line trick, so if you are not familiar with a terminal, this tip will not be of much help. Without further adieu:

Simply use the convert command line utility to convert it.

$ convert image.png image.eps

Yes, it was that easy! Out came a perfect .eps file which I was able to use in my LaTeX document. The convert command has all sorts of other options for resizing and many other things, but for simply doing a straight conversion, that was all!

Worth noting, while this worked for .png to .eps, it also works for.jpg to .eps and .gif to .eps. Have not tested anything else, but it appears to be pretty versatile!

Claim back disk space from Mail.app (Gmail)

There is a good chance you read your mail from Gmail with Mac’s native Mail app. There is also a good chance you never really paid attention to how much disk space all this content synced with Gmail IMAP really takes up. Having recently replaced my internal 160 GB hard drive with an Intel X25-M SSD drive half the size, I’m naturally eager to strip all the unnecessary stuff out of the system in order to save some SSD space. So how to free a few gigabytes of space from Gmail?

This question has long been lingering around, it’s just that I didn’t care about it when I still had disk space to throw away: Why does ~/Library/Mail/IMAP-marknanut[…] folder take up almost triple the size (some 7 GB) of the amount of actual mail being shown in my Gmail web account (some 2.5 GB)? Gmail messages seem to take up too much space when used with Mail.app (or any other client that uses IMAP, really). Right click on the “IMAP-youraccountname” folder and select Get Info to see its size:

imap-markn

gmail

Ok, this isn’t that hard to find out and goes roughly like this: Gmail’s tags are not exactly compatible with IMAP’s folder logic, thus being displayed as folders in IMAP. In very rough terms: a mail with multiple tags, say 2 or 3 tags, gets locally copied to the same number of folders with these tag names (2 or 3 folders). If you do a Spotlight search in Mail, you’ll usually get duplicate results – for instance the same received mail message appears in “All Mail”, “Inbox”, also “Starred” and so on, whereas a sent message appears in “Sent Mail” and “Sent”.

duplicates

It would obviously be best to prevent Mail.app from downloading folders where there are most certainly mail duplicates. You’ll figure it best for yourself, but for a start we can eliminate the “All Mail” folder. So how to do it?

Inspired by the post of Rajiv Pant, I went to my Gmail settings, and under Labs section I enabled “Advanced IMAP controls”.

labs

Next uncheck all tags (folder) you don’t want to download locally (for instance “All Mail”) in the Labels section.

labels

I also unchecked “Starred” and “Spam”. I restarted Mail.app, and voila – no All Mail, Starred and Spam folders, no duplicates and more than 4 GB extra space.

foldrs

imap-markn

Which IMAP folders you’ll prevent from downloading, is of course up to you to figure out. I wish you success. Check out Rajiv Pant’s post too. 

Macbook Pro的Home和End键

用了Macbook Pro已经有一年多了,很是惊叹于苹果的工业设计。另外,也对Mac OS X的设计理念深感敬佩。我想,如果我不是一个被Win荼毒了十几年的Win-er,基本上应该是非常习惯并且能轻松上手Mac的。

在MBP上,有几个我非常熟悉的键,我找不到了。那就是PageUp,PageDown和Home、End。失去了才觉得珍贵,以前键盘上有这几个键的时候,不觉的怎么好用了,但是一旦失去了,还真的挺不习惯的。

在网上查了一些资料,看到了替代的方法。在这里记录一下,主要应用场景,就是网页浏览的时候:

PageUp = Fn + UP
PageDown = Fn + DOWN
End = Fn + RIGHT
Home = Fn + LEFT

向前Delete=Fn+DELETE

上面提到的上下左右,就是指方向键。这只是一个替代方案,还是有其缺陷的,比如我发现当文本框获得焦点的时候,就会失灵。

在编辑的时候:

Home = Command + LEFT
End = Command + RIGHT

以上的键组合,基本上可以满足基本的使用,不过组合键总归是不如直接键来得方便。只好慢慢习惯了。

[转]自制可更新MAC版国服魔兽世界

        无论是黑苹果还是白苹果,mac下病毒比窗口少这是不争的事实。5.2马上来临,你的mac准备好了吗?还在为mac下客户端每次升级担心?还在windows下更新而后拷贝到mac下?希望一个一劳永逸的法子?那么你最好看下。

 

       特别提示,有异议请勿看,可能《X-Only》Huan.Zuo大大发布的补丁更适合您。

 

不废话了,直接开始。

(本人系统为OSX Mountain Lion 10.8.2,经测试10.7以上均可使用。)

工具/原料

  • 原理

    1、全球版本大统一

    2、更新和登陆目前是Config.wft文件控制

  • 台服或者美服安装包

    美服安装包下载地址

    下载页面 https://us.battle.net/account/download/

    安装包 http://dist.blizzard.com/downloads/wow-installers/full/World-of-Warcraft-Setup-enUS.zip

    台服安装包下载地址

    下载页面 https://tw.battle.net/account/download/

    安装包 http://dist.blizzard.com/downloads/wow-installers/full/World-of-Warcraft-Setup-zhTW.zip

    (不放心的自己登陆战网台服美服的主页,找下载页面还是很容易的。)

全新安装

  1. 下载完成后解压到任意位置,点击开始安装。安装开始需要输入一次密码。

    3801213fb80e7bece631fac42e2eb9389b506b28
  2. 点击INSTALL开始安装。

    fcfaaf51f3deb48f49ba58fbf11f3a292cf578c0
  3. 这个过程和windows下区别不大,反而和mac下的dmg安装直接拖放直想要的文件夹不同。选择语言就不用了,除非你想安装西班牙语或者葡萄牙语。选好保存位置,滚动条拉到最下方,点击AGREE,开始安装。

     

    然后就是开始漫长的等待了,本人是8M网速下载速度1MB/s的左右,大概用了6个小时。基本上是满速。这个过程很让人难熬,后面也给出已有完整客户端另外的方法。  //其实这一步不需要等待,新版本的登陆器是可以边下边玩的,所以等到运行按钮变成红色可点就可以关掉启动器进行下一步了。

    a50f4bfbfbedab642571b5e5f636afc379311e97
  4. 安装完成后不要着急进入游戏,进入游戏安装文件夹中找到Data文件夹,新建一个名为zhCN的空文件夹,如果有英文语音需求可以多增加一个enCN的文件夹。

    4e4a20a4462309f7fe335537730e0cf3d7cad6b3
  5. 运行World of Warcraft Launcher.app。这时候客户端会开始更新,依旧是漫长的更新,不过这次会比上次情况好很多。

     

    等待更新完成,关闭更新器。 再次进入游戏安装文件夹中找到WTF文件夹,找到Config.wft文件。

    cefc1e178a82b9017ffa3b16728da9773912ef44
  6. 使用文本编辑器打开。找到以下内容

     

    SET locale “enUS”

    SETinstallLocale “enUS”

    SETportal “us”

     

    locale 此项为为你要使用的语系,选项有:

    zhCN(简体中文)、enCN(简体中文-英文语音)、enUS(美国英文)、zhTW(繁体中文)、enTW(繁体中文英文语音)

     

    portal 此项为你要登录的服务器,选项有:

    cn(大陆)、tw(台服)、us(美服)

     

    修改 SET portal “us”为 SET portal”cn”,没有的话直接添加就可以。

     

    SETlocale “enUS”可以不修改,这个可以在客户端设置中修改设置。在这里直接修改为 希望的语系语音例如: SET locale”zhCN”。如果没有安装相应的语言语音文件,尽量不要选择,否则运行World of Warcraft Launcher.app或者Worldof Warcraft-64.app后会自行下载语音包,造成程序假死但是实际在后台下载的假象。

    编辑完成后保存文件。

     

    至此,完整的mac客户端已经完成。

  7. 打开World ofWarcraft-64.app,直接开始游戏即可。

    修改界面内容的也可在此更改。

     

    d31b0ef41bd5ad6ed5b19ccf80cb39dbb6fd3c4e
  8. 至于插件,直接下载好整合插件或者自己喜欢的单独插件放置Interface\AddOns下即可直接使用。如果你们习惯了使用插件大脚墨盒等下载器……那就没办法了,能力有限。

    b3119313b07eca80fd3ac2c2902397dda14483dc
  9. 另外关于字体的更改,本人没有解决,只解决了英文字体,解决方式还不完美,暂时不放了,只有求其他大神解决了。

针对已有完整客户端玩家

  1. 如果已经有了完整客户端,再去下载20个多G的客户端有些难办,不过直接使用美服的话肯定是原汁原味未和谐。

    第一步和全新安装区别不大,

    选好保存位置,滚动条拉到最下方,点击AGREE,开始安装。

    6159252dd42a2834b142ce2e5ab5c9ea15cebf2b
  2. 等待片刻文件夹中有了基本的文件(起码有文件夹后)后关闭安装器,将已有的客户端覆盖刚才安装的目录。

    f703738da97739128a0b7e44f9198618367ae2e2
  3. 如果使用的时美服台服客户端,在Data文件夹,新建一个名为zhCN的空文件夹,如果有英文语音需求可以多增加一个enCN的文件夹;如果使用的时国服客户端,什么也不用做。然后继续打开安装器继续安装过程,这时候会发现安装条很快,需要更新的文件很少了。

  4. 完成更新后,此处和全新安装又一致了,进入游戏安装文件夹中找到WTF文件夹,找到Config.wft文件修改。

    修改 SETportal “us”为 SET portal “cn”,没有的话直接添加就可以。

     

    更新问题,可能会因为美服台服更新时间不一致,直接使用Launcher.app登陆可能会使客户端提前更新造成无法登录国服,不过过了更新阶段,国服和美服台服版本全部更新之后就没有问题了。至于担心的国内版本号不一致问题直接忘了吧,这些是TBC和WLK时期的事情了。

     

Mac下删除“打开方式”里面重复的软件列表方法

在Mac系统中,如果一个程序进行了版本更新,那么就会在打开方式中留下两个相同的打开方式。虽然一两次还能忍受,但是时间长了会让列表变得过于庞大。

20090811-ejw6qi74x5r4xmgdfrrtreiafa

要解决这个问题,可以通过把出问题的程序拖到垃圾桶再放回来解决,但是程序一多就不是一个办法了。其实,只要打开terminal(终端),复制粘贴(完整的一行,是一条命令),执行后即可重建列表。

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system-domainuser

[警告] 苹果apple id密码重置漏洞

更新:有人说该漏洞已经修复,但是刚刚我用自己的ID又测试了一下发现这个漏洞依然存在!

今天一个朋友的苹果帐号密码被修改,iMac、iPad、iPhone上的所有资料都被抹除,iMac被锁定无法登陆,几百GB的资料瞬间化为乌有,怀疑是同行恶意行为。悲剧详情可到v2ex的这个帖子凭吊。

根据提示这个帖子描述漏洞详情的两个连接 国外版 国内版 里提到的方法,我用自己的apple id和新注册的apple id验证,的确存在

重置密码过程异常简单(使用chrome):

1. 登录https://iforgot.apple.com/iForgot/iForgot.html,填写指定的apple id,点击下一步
2. 选择验证方法—— 回答安全提示问题,点击下一步
3. 填写apple id注册时填写的出生日期,先不提交
4. 打开开发者工具,在elements处搜索”security”字样(某个hidden的input的value),改成null
5. 提交,进入密码重置页面,输入新密码,重置完成。

因此强烈建议立即修改自己apple id的生日

修改流程:

1. 打开 https://appleid.apple.com ,登陆
2. 点击左边的“帐户和密码安全”
3. 填写安全提示问题的答案,并点击继续
4. 在新页面里修改生日。

应该朋友要求已将操作视频录像,有兴趣的可以在 优酷 观看,或者从 百度网盘、 微云 下载,瞧瞧看看苹果的服务有多么不堪。

Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略

开发环境使用的是目前为止最新的稳定版软件:Mac OS X Lion 10.7 + Xcode 4.1

目前Xcode 4.2 Preview版也已经发布,据说其修改方法跟4.1非常类似,只改动了一行代码,请参看参考文章的第二篇。本文仍以4.1版本为例。
更新:现在Xcode 4.2正式版和iOS 5均已发布,下面补充上4.2的修改方法。(2011-10-24)
各步骤会标明版本,比如(Xcode4.1请执行)和(Xcode4.2请执行),4.2.1的修改方法与4.2完全相同
未标明的步骤为两个版本均需执行的步骤!
更新:现在Xcode 4.3已发布,修改方法类似,Xcode 4.3的修改步骤将以(Xcode4.3请执行)标出(2012-2-7)
更新:现在Xcode 4.3.2和iOS 5.1.1完美越狱均已发布,本文及时进行了更新。修改方法类似,Xcode 4.3.2的修改步骤将以(Xcode4.3.2请执行)标出(2012-5-28)
更新:Mountain Lion + Xcode 4.4已发布,本人尚未安装,但在评论中看到已经有朋友测试成功,这里祝贺这些朋友!(2012年8月5日)
更新:Xcode 4.5 for Mountain Lion已发布。本人已经更新并亲测破解成功。Xcode 4.5将原来XML格式的plist文件变成了二进制格式,故修改方法略有不同,具体操作已在文中给出,请各位朋友测试!(2012年10月2日更新)
 
2012年2月7日更新:
目前本人已经测试并证实有效的平台有
Xcode 4.1:
iPod touch 4 iOS 4.3.3
 
Xcode 4.2:
iPod touch 4 iOS 4.3.3
iPod touch 4 iOS 5.0
iPod touch 4 iOS 5.0.1
 
Xcode 4.2.1:
iPod touch 4 iOS 4.3.3
iPod touch 4 iOS 5.0.1
iPhone 4S iOS 5.0.1(5A406)
 
Xcode 4.3(2012年2月7日更新)
iPhone 4S iOS 5.0.1(5A406)
 
Xcode 4.3.2(2012年5月28日更新)
iPhone 4S iOS 5.1.1
 
Xcode 4.4.1 for Mountain Lion(2012年9月26日更新)
iPhone 4S iOS 5.1.1
 
Xcode 4.5 for Mountain Lion(2012年10月2日更新)
iPhone 4S iOS 5.1.1
 
Xcode 4.6 for Mountain Lion(2013年2月12日更新)
iPhone 4S iOS 6.1
 
另外,操作系统的版本貌似对调试影响不大,这期间用过的系统有Mac OS X 10.6~10.8.2,都没有问题。
 
当然您需要先越狱您的设备并通过Cydia安装AppSync

本文参考了多篇文章,综合其中的方法,并修正其中的错误,整理而成。
未经许可,请勿转载。本文首次发表于http://kqwd.blog.163.com/
参考的文章有:
http://laolang.cn/back-end-develop/helloworld-iphone-developer.html
http://ccmos.tw/blog/2011/06/30/xcode4-port-program-to-idevice-without-idp/
http://www.cnblogs.com/flyingzl/articles/2207717.html
众所周知,在Xcode上开发的程序只能在模拟器中运行,如果要放到真机上则要花费99美金购买开发者证书iDP。这严重阻碍了我等草根开发者探索的脚步。写个小程序,同学间分享一下这个小小的愿望都不能满足,自然不能善罢甘休。
在没有iDP的情况下,要想将程序放到iPhone上调试,并最终发布IPA用于分享,需要以下几个步骤:
1.自己为自己颁发一个证书用于为生成的程序签名
2.修改工程配置以及Xcode的配置文件和二进制文件以阻止其验证和签名
3.通过自定义生成步骤,用伪造的证书为应用程序签名
4.使用一点小trick来生成IPA文件
1.创建证书
创建证书的过程比较简单,打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。第一个步骤比较重要,必须要把名称命名为iPhone Developer,将类型设定为代码签名,将”让我覆盖这些默认值”选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以。
1295629317816035869
2.修改Xcode的配置文件和二进制文件
下面的步骤稍微有点繁琐,您应该了解UNIX命令行的基本操作,并了解一种命令行文本编辑器,本文使用的是vim。尽管这里会给出完整的代码,但是关于修改和保存代码的基本操作,不再赘述。下面的操作请先将Xcode按Command+Q完全关闭
(1)修改配置文件
进入目录并备份原文件(4.1、4.2、4.3在这里主要的差别是SDK的目录名不同)
(Xcode4.1请执行)cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/
(Xcode4.2请执行)cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/
(Xcode4.3请执行)cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk
(Xcode4.3.2请执行)cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
(Xcode4.5请执行)cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk
(Xcode4.6请执行)cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk
 
sudo cp SDKSettings.plist SDKSettings.plist.orig
进行编辑(除了Xcode 4.5之外的版本,包括Xcode 4.6)
sudo vim SDKSettings.plist
将以下两段中的YES改为NO
CODE_SIGNING_REQUIRED
YES
ENTITLEMENTS_REQUIRED
YES
Xcode 4.5的plist格式不是XML,而是改为了Apple自己的二进制格式,我们使用Xcode本身来编辑这个plist文件,命令是
sudo /Applications/Xcode.app/Contents/MacOS/Xcode ./SDKSettings.plist
会启动Xcode的图形界面,我们展开DefaultProperties分支,将下面的CODE_SIGNING_REQUIREDENTITLEMENTS_REQUIRED两个属性改为NO
下面修改另外一个文件
进入目录并备份原文件
(Xcode4.1/4.2请执行)cd /Developer/Platforms/iPhoneOS.platform/
(Xcode4.3/4.4/4.5/4.6请执行)cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
 
备份
sudo cp Info.plist Info.plist.orig
 
编辑文件
(Xcode4.1/4.2/4.3/4.4请执行)sudo vim Info.plist
将全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,网上的大部分文章说有2处,但我找到了3处,可能是Xcode 4.1要多一处?(Xcode 4.2/4.3/4.3.2也有三处)总之都改掉了。提示:在在vim中输入/要搜索的内容来搜索,按n键是搜索下一处。
(Xcode 4.5/4.6)编辑命令如下
sudo /Applications/Xcode.app/Contents/MacOS/Xcode /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist
Xcode 4.5、4.6也有三处,分别在DefaultProperties分支下、RuntimeRequirements分支下和OverrideProperties分支下。
(2)二进制补丁
#在桌面上建立script这个脚本
cd ~/Desktop
vim script
#(Xcode 4.1执行)在编辑器中输入如下内容
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf “xc3x26x00x00” >> working
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support
#(Xcode 4.2执行)在编辑器中输入如下内容
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf “xc3x26x00x00” >> working
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support
保存并退出。(4.1和4.2在这里的区别也是目录名不同,就是代码中绿色的部分。4.1是Plug-ins而4.2是PrivatePlugIns
授予这个脚本执行权限并执行它
chmod 777 script
./script
正常的话应该输出(具体的数字可能有差别)
231+1 records in
231+1 records out
115904 bytes transferred in 0.001738 secs (66694555 bytes/sec)
#(Xcode 4.3注意)在Xcode 4.3版本中,我没有找到iPhoneOS Build System Support.xcplugin这个插件,因此我跳过了这个步骤,并且最终也成功的进行了联机调试。因此我个人认为Xcode 4.3没有必要执行“二进制补丁”这一步骤。请各位朋友测试~!
#(Xcode 4.3.2/4.4/4.5/4.6注意)在Xcode 4.3.2版本中,我们可以找到iPhoneOS Build System Support.xcplugin,但我没有修改它,仍然可以进行联机调试。这个修改步骤是从Xcode 3.X中继承过来的,我们有理由猜测,在Xcode 4.x版本中,已经不需要修改这个文件了。(2012年5月28日更新)
 
至此,对SDK中配置文件和二进制文件的修改就完成了
3.准备自定义的生成后脚本
连接互联网后执行
#(Xcode 4.1/4.2执行)
mkdir /Developer/iphoneentitlements401
cd /Developer/iphoneentitlements401
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
 
#(Xcode 4.3/4.4/4.5/4.6执行)
mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements
cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
 
热心网友Ringo_D指出,这里可能涉及到权限问题。我做的时候貌似没有出啥问题,如果您在执行这段代码时遇到Permission denied提示的话,请将相应的语句前面加上sudo以获取超级权限。(2012年6月15日更新)
如果您已经联网,则请直接转到步骤4,如果您没有联网,那么请在相应目录手动创建gen_entitlements.py并授予其执行权限,这个文件的内容为
#!/usr/bin/env python
 
import sys
import struct
 
if len(sys.argv) != 3:
print “Usage: %s appname dest_file.xcent” % sys.argv[0]
sys.exit(-1)
 
APPNAME = sys.argv[1]
DEST = sys.argv[2]
 
if not DEST.endswith(‘.xml’) and not DEST.endswith(‘.xcent’):
print “Dest must be .xml (for ldid) or .xcent (for codesign)”
sys.exit(-1)
 
entitlements = “””
    application-identifier
    %s
    get-task-allow
   
“”” % APPNAME
 
f = open(DEST,’w’)
if DEST.endswith(‘.xcent’):
f.write(“\xfa\xde\x71\x71”)
f.write(struct.pack(‘>L’, len(entitlements) + 8))
f.write(entitlements)
f.close()
4.修改工程设置
特别注意:本阶段之前的修改配置文件、准备脚本等,只需要做一次。但本阶段的操作,对每个需要真机调试的工程都要做一遍。
这个步骤的主要作用是支持真机调试,如果不做这个步骤,仍然可以通过步骤5来生成ipa在真机上运行,但是无法使用Xcode内置的调试器对在真机上运行的程序进行单步跟踪。如果您的程序在点击Run真机调试时秒退,请检查此步骤是否正确完成。

(1)禁用Xcode自动的签名操作

将工程配置中所有的Code Signing选项全部设为Don’t Code Sign,如图。可能需要先点击“All”让这个选项显示出来
2529052665762129796
(2)添加自定义的生成后脚本
在Build Phases中添加一个Phase,右下角的Add Build Phase,然后单击Add Run Script,输入以下脚本
(对于Xcode 4.1/4.2)
export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ “${PLATFORM_NAME}” == “iphoneos” ] || [ “${PLATFORM_NAME}” == “ipados” ]; then
/Developer/iphoneentitlements401/gen_entitlements.py “my.company.${PROJECT_NAME}” “${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent”;
codesign -f -s “iPhone Developer” –entitlements “${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent” “${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/”
fi
(对于Xcode 4.3/4.4/4.5/4.6)
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ “${PLATFORM_NAME}” == “iphoneos” ] || [ “${PLATFORM_NAME}” == “ipados” ]; then
/Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py “my.company.${PROJECT_NAME}” “${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent”;
codesign -f -s “iPhone Developer” –entitlements “${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent” “${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/”
fi
 
如图所示:
672162244401931959
至此配置全部完成,下面就可以插上iPhone,重新选择生成目标来测试一下在线调试了!如果是第一次使用该设备调试,请先在Organizer中将设备切换为开发模式,具体操作请见常见问题5。
5.旁门左道生成IPA文件
如果我的程序调试好了,怎么才能发给别人用呢?正常情况下IPA文件是从Xcode的Organizer中输出的,但是我们没有证书,这样输出会产生错误。我们只能用个小trick来完成这个操作了。
先将代码生成为Release目标,然后打开工程的输出文件夹,通常情况下这个目录是
/Users/你的用户名/Library/Developer/Xcode/DerivedData/以工程名打头的文件夹/Build/Products/Release-iphoneos
很纠结吧~这个目录下有个.app的文件,就是生成的程序了。把这个.app拖到iTunes中,它会出现在应用程序那个列表中,然后再把它从iTunes的那个列表中拖出来(比如拖到桌面),发生了什么?哈哈,它就这样变成.ipa了!
把这个.ipa发给朋友,大家就可以跟您一起分享这个程序了。
文章发表以来点击量已经超过了5000次,也收到了不少热心博友的反馈和疑问。现加以整理,列为常见问题。感谢大家的关注!(2011年12月2日)
常见问题:
不成功的先看这里!!本文点击量超过6000,无数网友亲测成功,如果您失败了基本可以确定是您没有严格按照文中的方法操作,下面列出常见问题,切望各位朋友提问前先看看!!(2011年12月14日)
 
1. 我是初学者,请问什么是权限?执行权限(x权限)是什么意思?什么是脚本?如何加执行权限?sudo是什么命令?vim是什么,如何在vim中保存更改?你说的目录我没找到怎么办?我有些步骤没看明白,能不能加QQ交流?
解答:首先感谢您关注我的博客。这里要提醒各位初学者朋友,Xcode提供了非常完善的模拟器调试环境,模拟器调试要比真机调试方便得多,也简单得多,使用模拟器调试程序是iOS开发的常态。真机调试通常是在产品快要完工时才进行的,看一下程序在实际机器上的视觉效果等等。还有依赖于加速度计的程序要测试一下加速度计的程序有没有问题。所以初学者并不需要一开始就进行真机调试。初学者配置真机调试的主要目的可能并非学习技术,而是满足好奇心、追求成就感甚至是为了向朋友炫耀等等。而这些目的并不值得您花费这么大的精力来阅读本文。
因此本文是给有一定基础的朋友看的,各种命令是免不了的。UNIX中的基本命令比如cp,mv,cd,chmod,sudo啥的还有vim编辑器,如果您都没听说过,强烈建议您不要尝试本文提到的修改。一旦改错了轻则Xcode挂掉,重则系统崩溃。如果遇到解决不了的问题欢迎留言询问,务必给出详细的错误信息,否则无法判断。博主恕不解答类似于如何执行脚本代码,如何赋予执行权限,如何使用vim编辑器(如何保存)等与iOS开发无关的UNIX基础问题。博主非常乐意以文会友,结识有思想、有创意、有技术的大牛。博主也会不定时到博客上对热心网友提出的问题进行简单的解答。但并没有充足的时间通过QQ对文中的步骤进行手把手的解释和指导。这里先向有这种需求的朋友说声抱歉了!
 
2. 各种错误,错误信息中包含“No such file or directory”这句话
解答:错误信息的含义非常清楚,就是“没有这个文件或者目录”。这类错误通常是由于您拷贝代码时不全或者开发环境安装错误等问题导致的。请再次检查报错的目录是否存在,检查代码与本文给出的是否严格一致,各种检查吧~总之是低级错误
 
3. 联机调试时程序秒退,或者无法安装到设备,或者任何时候报错,错误信息中包含“code signing”、“CERT”、“signature”或者“certificate”字样的(最常见的错误!!)
解答:证书错误或者签名错误,这种问题就不要问了,肯定是因为您没有严格文中的步骤做。提醒您检查的地方有(1)有没有设置为Don’t Code signing (2)生成后事件的代码是否已经正确粘贴 (3)那个Python脚本是否已经成功执行 (4)设备是否已经越狱并安装AppSync (5)第一步的iPhone Developer证书是否已经正确创建
其中最可能出问题的就是生成后事件代码(文中的那个Run Script)没有正确执行。可能是您忘记了添加Run Script并粘贴那段代码,也可能是您没复制全,或者复制到了啥特殊字符导致执行出错。查看那个script的执行结果的方法是在Xcode左侧的侧边栏里,点最靠右的一个标签(Show the Log navigator),看最近的一个Build日志(不是Debug日志),找到一行Run custom shell script “Run Script”那一行,正常情况下那一行跟其他行一样,是不能展开的。如果那一行左边有个小箭头,点击后能展开的话,说明执行出错,展开后的信息即为出错的信息。请认真查看错误信息并修正脚本中的错误。如果Build日志里根本没有Run custom shell script “Run Script”,那说明您忘记添加Build script了。。。(2012年2月9日更新)
补充:Run Script经常报的一条错误是“replacing existing signature”。。。这个提示的意思是“替换已有的签名”,出现这个提示的原因是,你并没有成功的阻止Xcode使用默认的方法为应用程序签名。因为这个破解的原理就是阻止Xcode为app签名,而用script中的自定义过程手动为app签名。当script为app签名时,发现app已经被Xcode签名过了,就会报这个错误。出这个错误后提醒您检查的地方有两个(1)SDKSettings.plist中需要修改的地方是否已经正确修改 (2)工程设置里是否将那5个签名的选项全部设为Don’t Code signing (2012年6月15日更新)
 
4. iPad能用吗?
解答:我没有iPad,所以没法准确回答。但从热心博友的回复来看,iPad无疑是可以用的。
如果要用ipad 需要把第四步脚本文件里的 platform_name == iphones 换成platform_name == ipads 不然会报错的~ (感谢博友xyishao的建议)
感谢qingcheng89提出的改进意见,现在来看上述代码可以直接支持iPad而无需修改,请各位朋友测试。(2012年2月9日更新)
 
5. 为什么我的Build for Archiving选项是灰色的?
解答:是因为您没有把设备插到电脑上。虽然这个问题挺蠢的,但我曾经也有过这个疑问,哈哈~~ 
经热心网友xc7296815提醒,设备未开启开发模式也会导致Build for Archiving不可用。开启开发模式的方法是:插上设备,点Xcode右上角的Organizer图标,选中您的设备,看一下设备名称左侧的小灯是什么颜色的。若是灰色代表未开启开发模式。此时在右边窗口中点击“Use for Development” 即可。若是黄色请重新插拔设备,若是绿色代表设备已经开启开发模式(2011年12月25日)
关于启用开发模式的补充:点击Use for Development后,会要求输入Apple ID,这里点击取消即可。这时启用设备开发模式的进程会立即终止。设备名称旁边应该有一个黄灯。此时重新插拔设备,Organizer中会出现一个进度条,等这个进度条跑完,小灯就会变成绿色,开发模式已经启用。(2012年5月28日更新)
再补充:最近经常有人提问说,无论怎么搞,Organizer中的灯始终是黄色的。这种情况几乎可以百分之百的确定是您的Xcode版本不够高。如果您的设备是iOS 5.1.1,则必须使用Xcode 4.3.2或以上版本。同样的道理,iOS 5.0.1对应Xcode 4.3.1,iOS 5.0对应Xcode 4.3……(2012年6与5日更新)
 
6.我的iOS版本/Xcode版与你的不同,能用吗?
解答:本人测试过的环境和设备已经在文章开头给出。其他环境我没有测试过,也没有条件测试,因此当您的环境与我的不同时,别问我可不可用,您可以试一下,然后把结果告诉我,也为其他的网友提供方便,在此先谢谢您了!
 
7.真机调试时出现Error launching remote program: failed to get the task for process xxx错误(2012年1月26日更新)
解答:我在调试中貌似没有遇到过这个问题,但是不少网友指出会有这个问题,谁来告诉我什么情况下会出这个问题呢?如果您遇到了这个问题,请阅读Apple官方的帮助文档http://developer.apple.com/library/ios/#qa/qa1710/_index.html
2012年2月1日更新:有网友指出该错误是由于权限设置错误导致的。由于我使用了跟报错的那位网友完全相同的环境,而在操作过程中并没有遇到这个错误,所以基本可以确定是您没有按步骤操作造成的,请您再次检查整个过程,尤其是热心网友提出的下载脚本并修改执行权限的部分。
经本人测试,如果该错误出现在编译运行之后,且现象为设备上的程序闪退,则是由于签名错误导致的,这是由于您没有严格按照上述步骤来做导致的,请参考常见问题3.(2012年2月9日更新)
文章好长…欢迎各路大侠指正。

Mac Adobe CS6 完美破解激活(免替换文件/可更新)详细图文教程

最近一直在折腾 Mac,就连在 Windows 下闭着眼就能安装的 Adobe 系列,都显得有些陌生。尤其是破解激活的过程。虽然也有 Windows 下最常见的 amtlib 替换法,但好友 Digidea 告诉我那样其实不太安全。于是索性混了几天各种论坛,学会了一种通过序列号和激活码来激活 Adobe CS6 系列的方式。下面就以在 Mac 下安装 Photoshop CS6 为例,把过程详细的写下来,以备后用。

准备工作:

1,各种安装包,不要大师版,而是独立安装包。最好是官方的,网上很多,搜一下;
2,准备独立安装包的序列号(cd-key),在文章最后我会提供;
3,下载 Adobe CS6 大师版注册机,等会用它来生成激活码(点击下载,含 Windows 版和 Mac 版);
4,如果是 Mac 下建议再准备一个方便修改 hosts 的工具“Hosts 1.1”(点击下载);
5,断网。

第一步:检查现有的 hosts 文件:

如果你之前干过屏蔽 Adobe 的坏事,那么现在检查一下 hosts 文件中是否包含以下两行,有的话先注释或删掉,因为它会导致你等会输入 CD-KEY 的时候总是无法通过:

127.0.0.1 lmlicenses.wip4.adobe.com
127.0.0.1 lm.licenses.adobe.com

第二步:安装 Adobe Photoshop CS6:

启动 Adobe Photoshop CS6 的独立安装程序,选择安装 Adobe Photoshop CS6,如图:

adobe-cs6-setup-crack-1

安装过程中选择“安装(我有序列号)”,然后输入序列号,如图:

adobe-cs6-setup-crack-2

点击下一步,然后会提示[请连接到 Internet,然后重试],这时要先点击“稍后连接”。然后下一步,直到安装完成;

第三步:激活 Adobe Photoshop CS6:

打开已经安装完成的 Adobe Photoshop CS6,切记保持断网。会提示[序列号验证]的时候点击“连接 Internet 时是否出现问题?”,如图:

adobe-cs6-setup-crack-3

然后根据提示选择“脱机激活”,接着选择“生成请求代码”,再来到下一步,会给出一段请求代码,如图:

adobe-cs6-setup-crack-4

把请求代码复制起来,不要关掉。然后打开刚刚准备的注册机,在 Serial 填入刚才安装 Photoshop 时填写的 cd-key,并且在 Request Code 填入刚才复制的请求代码。点击“Gen. activation”生产一个 Activation code,如图:

adobe-cs6-setup-crack-5

把得到 Activation code 复制起来,回到 Adobe 激活界面,把算出来的 Activation code 粘贴到[响应代码]后点击“激活”,接着就会提示“脱机激活完成”并告知你已成功激活!至此,我们已经成功激活 Photoshop CS6 了!

第四步:修改 hosts 文件:

为了避免 Adobe 过后会检查,我们还要再修改 hosts 文件,加入下面四条纪录:

127.0.0.1 lmlicenses.wip4.adobe.com
127.0.0.1 lm.licenses.adobe.com
127.0.0.1 activate.adobe.com
127.0.0.1 practivate.adobe.com

最后:检查更新:

现在,让我们很低调很低调的检查一下更新,会发现已经可以更新了,如图:

adobe-cs6-setup-crack-6

adobe-cs6-setup-crack-7

附:Adobe CS6 独立安装版本序列号(CD-KEY):

Adobe Photoshop CS6: 1330-1887-7489-4700-7429-5959 或 1330-1071-1536-4954-3005-2944;
Adobe Illustrator CS6: 1034-1199-6358-6414-2734-2457;
Adobe Fireworks CS6: 1193-1629-6196-3576-7233-2107;
Adobe Dreamweaver CS6: 1192-1439-5431-5970-9189-4949;
Adobe InDesign CS6: 1037-1152-9294-1135-7907-7102;
Adobe InCopy CS6: 1036-1125-4514-7088-7717-8283;
Adobe Flash Professional: 1302-1609-4472-2505-4933-2084;
Adobe Audition CS6: 1137-1633-8198-8315-0942-5899;
Adobe AfterEffects CS6: 1023-1897-8153-1746-6817-1885;
Adobe PremierePro CS6: 1132-1248-3910-1856-5842-0927;