找到了我的Mac下的git-svn不工作的问题

前一段时间把Mingle的svn用git-svn在本地clone了一个git repository,不过后来非常奇怪的是git svn的时候提示命令找不到了。没有在意。

今天需要用git svn rebase一下这个repository,所以到处搜索为什么?最后发现了问题在于我使用macports安装的git-svn,但是升级的时候却使用了git install,结果造成了系统中安装了两个配置不同的git-core包,而包含git-svn的却没有被激活。

执行

tin@tw-dell:git_mingle >port installed The following ports are currently installed: … git-core @1.6.0.2_0+bash_completion+doc+svn git-core @1.6.0.2_0+doc (active) …

就是说+svn的git-core目前没有激活,那么好办了。

tin@tw-dell:git_mingle >sudo port deactivate git-core @1.6.0.2_0+doc —> Deactivating git-core 1.6.0.2_0+doc tin@tw-dell:git_mingle >sudo port activate git-core @1.6.0.2_0+bash_completion+doc+svn —> Activating git-core 1.6.0.2_0+bash_completion+doc+svn

其中先deactivate现在激活的git-core,再activate+svn版本的git就OK了。 如果你还没有安装,这样安装:

sudo port install git-core+svn+bash_completion+doc

–EOM–

iPod touch 2入手

托同事从香港给带了iPod touch 2,好兴奋的拿到了这个iPhone的替代品。因为我一直以来很像有一个像样的掌上设备可以有空做做开发,而iPhone/touch可以说是不二之选,因为从艺术的眼光上看他们很完美(起码我这么看)。而且多点触摸带来的交互革命激发了我作为UE边缘认识的兴趣。

iPod touch 2多了录音功能,所以也可以配合fring实现skype通话,不过前提是你需要购买带mic的耳机,目前似乎只有Apple原装的,要220港元,好贵,所以暂时还没有出手买这个。但是机身先下手了。是从国美(香港)买的,因为很多retail的地方都售空了。

现在的iPod包装实在是简单,连说明书都没有,只有一个简单的开箱指南,还有一个基本的连接iTunes的说明,仅此而已,不过倒是这样就够了,因为可以把你的眼球固定在touch上,让你自己好奇的去探索。我觉得激发用户的探索意识是很好的一种让用户产生沉浸感的营销方式,而且从苹果一向的交互设计理念上来说,他们非常注重启发式探索,并且尽量让你本能的达到自己所期待的结果,这个正是交互设计的重点所在。

那么不废话这么多,上图。图是上周一晚上照的,最近生活节奏太快,现在才抽空出来显摆^____^

在 OSX 10.5 (Leopard) 安装 MySQL-Python

友人nicholas.ding说:

尝试安装了一下 MySQL-python,发现竟然编译不过去,在网上搜了一下,找到了一个 workaround,应该是作者疏忽了。

原文在:http://www.keningle.com/?p=11

需要下载源码自行编译,首先修改 _mysql.c,删除从 34 行开始的 3 行。

#ifndef uint
#define uint unsigned int
#endif

uint port = MYSQL_PORT;
uint client_flag = 0;

修改为

unsigned int port = MYSQL_PORT;
unsigned int client_flag = 0;

创建一个符号链接

$ sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

最后编译安装就可以了

$ python setup.py install

在我这里这样还是不可以,最后发现还要做如下改动,原因可能是我使用了mysql官方提供的package安装mysql,结果路径有些差异造成的:
在安装前还需要修改setup_posix.py,把mysql_config.path = "mysql_config"修改为:
mysql_config.path = "/usr/local/mysql/bin/mysql_config"

然后再sudo python setup.py install就OK了。

解决Hg在MacOSX leopard上的locale问题

简短说,因为重新在新mac上装mercurial,没有装macports也没有fink,这次也不想自己编,所以选择了预编译的package。但是后来发现报错!
我用的是http://mercurial.berkwood.com/这里的包,1.0.1的mercurial package,是08-05-25出的那个包。

line 373, in _parse_localename
raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

那么,如何解决呢?这里找到了答案:
http://www.selenic.com/pipermail/mercurial/2007-October/015296.html
解决的方法就是在你的.profile加入下面这样的声明,如果你用的是bash的话。

export LC_ALL=es_ES.UTF-8
export LANG=es_ES.UTF-8

然后就工作正常了,如果想知道为什么,可以看看这里有更详细的原理介绍,LC_ALL是给字体字符集使用的环境变量。
http://www.madboa.com/geek/utf8/

结绳记事,希望有帮助。

使用“简单文件共享”一点不简单!

因为懒惰,所以一直没有解决一个问题。我的苹果一直不能访问家里的台式机,但是家里的台式机实际上是我家的文件中心,在已经卸下两块硬盘的情况下,这台机器上还有320X2+250+120=1010G的硬盘空间。我从用笔记本看电影的时候希望可以访问Windows的共享目录,但是却每次都提示您没有权限访问文件共享。可是我已经为苹果设好特别的帐号了,非常费解。但是在苹果上访问别的Windows电脑却正常。
百思不得其解,但是最终还是解决了。不废话,说方法,我的是Windows XP SP2:
1、去Windows上,在我的电脑的工具-设置里面,取消“使用简单文件共享(推荐)”这个选项。
2、这个时候再去共享目录或者驱动器根的时候你就可以选择帐户和连接数了。选择你要使用的帐户,加入到授权访问的帐户列表中去,即使里面已经有Everyone了。
3、去苹果上在浏览器(如Safari)里面输入smb:\\192.168.1.x,或者直接在Finder里面选择相应的主机名。这个时候会询问你帐号和密码,然后输入你在Windows上面的帐号就可以了。

怀疑原因是我的Windows正好出了什么毛病,我的新帐户可能也许不在Everyone里面,虽然不应该,但是不管它了,你完全可以将目录的访问授权只给特定的用户,如我的电脑上有个mac用户,使用密码保护,这样可能更加明确。
那么,反正这次的麻烦就归在倒霉的“简单文件共享”上免了,它一点也不简单!

原来Mac的Lotus Notes客户端真得可以显示中文!

这样做:

去’系统偏好设置-System preference’里面的’国际化-International’把简体中文设为首选语言.关闭你的Notes客户端.然后开Terminal,在里面输入’killall Dock’,你的Dock会自动重新启动.然后再启动Notes客户端,你就可以看中文了.

不过我发现再启动的时候你发现Notes又不可以显示中文了.

问了下徐X,他说他都是拷贝中文的’**’出来粘帖到文本编辑器里面就可以显示出来了,笨方法,不过可能也不算麻烦.

不过忘记说了,前提是你用的mac lotus notes客户端的版本在7以上,我的是7.0.3.

这个方法是从手工帽匠的博客里面发现的.

在Mac下启动多个Firefox实例方便JsUnit运行

项目中的JsUnit是使用ant脚本运行的,里面需要设置BROWSER_PATH的环境变量来启动浏览器。在本地check in代码的时候,我们会运行一下测试来减少愚蠢错误被提交到代码控制系统。但是在我的mac下Firefox只能启动一个实例,在运行JsUnit test的时候会提醒我已经打开了Firefox,不能打开另外一个实例,这样我必须关闭正在运行的Firefox。而且由于我比较喜欢打开非常多的Tabs来保持浏览状态,所以关闭Firefox让我很不爽,再说,因为重新启动的Firefox里面带了很多的Tabs,所以经常造成实际运行的JsUnit test发生随机性的超时错误,这个就不能容忍了,因为这无法保证我们的信心。

那么,为什么FF不能启动多个实例呢?原因是它们共享同一个Firefox的profile,所以没法多个实例并发访问。但是通过命令行参数是可以创建多个profile给firefox的,简单了。不过遇到的问题是JsUnit的ant任务会检测BROWSER_PATH是否存在,所以如果我把带参数的命令行写到环境变量里面Ant无法检测到这个文件就会报错。那么如果关闭检测可以么?还是不行。因为JsUnit的StandaloneTest里面实际最后会调用DefaultProcessStarter的execute方法,这个方法调用Runtime.getRuntime().exec(command),这个实现非常直接,不过因为parameters如果直接写到命令行里会发生文件无法找到的问题(应该用数组将命令和参数传入)所以没有办法传入,还是无法运行。

放弃hack吧,我可以修改Ant task和JsUnit的方法,但是绝对不好,因为这个hack没有提交回去的意义。
所以换个思路,这样做:我们去写个shell来解决它。

先在终端运行/Applications/Firefox.app/Contents/MacOS/firefox-bin -CreateProfile jsunit,这时候会弹出窗口让你确认创建这个profile,选择一下不使用extensions和各种工具条,这样减少这些设置对测试的不良影响。
然后在你的home目录创建一个firefox.sh,里面写上:

/Applications/Firefox.app/Contents/MacOS/firefox-bin -P jsunit $1

前提是你的Mac使用的是默认的bash,否则修改$1为对应的引用字符。然后chmod firefox.sh 555,让它可以运行。

下面就是修改你的~/.profile:

export BROWSER_PATH=/Users/[User path]/firefox.sh

source ~/.profile让修改生效再运行JsUnit就OK啦。如法炮制想开几个Firefox实例都可以啦。同样方法也适用于让Firefox2和Firefox3共同运行!非常简单。还可以做到开发和浏览分开……以此类推。

回顾一下JsUnit的代码写的不好,如果像Selenium一样能够自动创建一个profile就好了,因为那样可以减少测试之间的影响,还可以让Selenium并行执行。我想,如果有空我可以做一下这个工作:D