2012年5月25日星期五

hosts的问题

昨天困扰了我很久,为什么在我的win7上可以下载googlecode数据,而在MacOS上总是卡在git clone上。今天又尝试了在CentOS上做git clone,结果跟MacOS上是一样的效果。

于是我尝试了在这两台虚拟设备上访问googlecode,结果是可以访问的,我就不知道哪里出了问题。开始的时候我还以为是MacOS自带的git不好用,于是我又下载了一个最新的版本安装了一下,但结果依旧。直到今天在CentOS上又出现同样的事情,让我有些警觉

我尝试着去连git的ref head,结果不能打开,于是我大概知道了是什么原因,还是由于我win机器里面的google hosts会自动更新,而两个虚拟机却不能共享我这台机器的hosts造成的。于是把win的hosts文件拷贝两份给两台机器,一切解决。

但今天又出现了一个问题,我已经完成iphone demo的开发,想装在自己的iphone上,但根据网上生成ipa的方法,我始终差一步,就是不能被xcode搜索到我的机器。我不知道是不是由于我的MacOS在虚拟机中的缘故,其实说实话我们做IOS开发被Apple设置了重重障碍,不得不花费更大的精力在这种与开发无关的事情上,劳民伤财啊

2012年5月22日星期二

安装MacOS X

1、需要的软件:

  • VMPlayer4.0.1
  • 引导工具darwin.iso
  • MacOS系统LeoSnow.iso

一般MacOS只有LeoSnow.dmg格式的安装程序,这样虚拟软件可能会出现认不出来系统光驱,如果是LeoSnow.dmg,那么还需要一款转换软件UltraISO.exe

2、接下来的流程请参照http://blog.csdn.net/zz457887107/article/details/6410411,注意,在建好虚拟机时,一定将guestOS改成darwin,如下图

b_large_D6Ja_1b750008f61a5c15

b_large_heyZ_1b750008f6775c15

3、这样启动时应该没什么问题了,我遇到的最大的难题是darwin已经引导,但就是找不到光驱的问题,一次次的弹出让重新确认,最后得到的原因是不认dmg格式,一定要转成iso格式才成。如果进入darwin菜单,选择h的话,会提示找不到引导文件,这个操作本身就是错的,因为你硬盘里面根本就没东西,这时候一定要按c能引导进去才能安装,其他一切都是白扯。反正我只遇到了格式不正确的问题,不知道还会不会出现其他问题

4、设置分辨率:

  • 打开终端,输入 sudo -s,取得root权限;
  • 输入 vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist,打开该文件;
    在<key>Timeout</key>
    <string>10</string>
    的下面添加如下两行:
    <key>Graphics Mode</key>
    <string>1680*1050*32@60</string>
    红色为分辨率,黄色为刷新率
  • 然后保存,退出
  • 重起。

5、安装切换输入法,这里有两点说明,一是如何打开终端:应用程序->实用工具->终端,终端有很多用处,很多命令跟lunux很像

image

第二就是如果设置输入法,系统偏好设置->语言与文本->输入源,就可以设置输入法了。切换输入法的方法是用win + backspace,其实这时的win键就跟apple的comman键是一样的功能了

image

2012年5月19日星期六

系统之争

今天遇到两件事情,勾起了我对系统的思考。一件是看到一篇文章,linux和windows之争的相关文章,主要是强调windows下能干的有意义的事情linux下都能完成,而linux下能做的事情在windows下未必能完成。作者也承认了游戏不是linux的长项,但他说游戏有更成熟的替代器,如PSP等专门的游戏设备比windows下的游戏体验性要好上很多;第二件事情是思考iphone下的开发,iphone的开发环境需要在mac os下进行,这使得我目前比较难办,要么买一台mac的设备,这是比较保险的一种做法,要么尝试虚拟机安装mac os,或者在x86机器上直接安装mac os。但这几种做法都存在着一个问题,我为了iphone的开发真的就要从自己熟悉的windows系统转到mac os上去吗?

确实挺难办的,所以才成就了VMWare和VMPlayer这样的软件,因为很多时候我们都需要多个系统,有时候仅仅是满足我们一方面的要求而已。我非常赞成并支持linux下编程的做法,所有的程序或配置都能用文本的形式描述出来,而不需要复杂的ide,因为IDE毕竟需要一个庞大系统的支撑,切换成另外一个系统就不是那么简单的一件事情了。刚看完linux下处理问题的优势,就让我遇到了IOS开发的难题,真是不得不说这是一个极大的讽刺,每个系统公司都想让自己的系统占为用户的主导,这就导致了用户选择上的障碍,开发上的障碍,我为了开发.NET程序不得不装一个windows系统,我为了开发IOS程序,不得不装一个MAC OS;为了他们,我不得不在linux, windows, mac os三者之间做出选择,或者三者皆用,但这样要耗费掉我们多少精力啊

虽然虚拟软件可以解决一部分的问题,但并不能解决全部的问题,一些系统升级带来了开发不兼容的问题迟早会出现,到时候还是不得不再寻找一些这样的设备来完成自己的任务

2012年5月9日星期三

c#对sqlserver中uniqueidentifier类型数据的as string 值为空白的问题

从数据库取数据我们习惯用以下代码:

string title = rows[0]["title"] as string;

当取的数据是uniqueidentifier类型,如id,则我们得到的数据就会为空白,可用如下方法解决:

string id = rows[0]["id"].ToString();

这个问题困扰了我近半小时,我也一直坚信uniqueidentifier是另外一种类型的string,但好像其遵循一定的规律,如果不符合这个规律也会报错,所以我不太喜欢使用它来作为ID,但困于旧代码的限制,目前只好这样做

2012年5月8日星期二

git-svn协同工作

现在工作中已经离不了版本控制了,而作为两种目前比较流行的版本控制软件,SVN和GIT各有各的优势。SVN中小单位使用比较广泛,GIT作为分步式的版本控制更加能体现版本控制的独立性。在以往的工作中,我总是把它们分开来使用,因为现在不缺少git和svn的服务器,googlecode对两种版本控制都做了很好的支持。

但由于历史的原因,我还不能完全切换到GIT上工作,目前我们的项目大部分使用VISUAL SVN作为服务端,代码托管到WINDOWS服务器。在此之前我主要使用SVN客户端进行工作,但缺点显而易见,由于我们的SVN服务器是局域网,所以回家以后就不能再连到服务器,做的一些工作想做一个暂时性的保存是不可能的,如果能够整合GIT和SVN的各自优势,则就不会出现这些问题了。

而今天,最新版本的mysysgit和其外壳tortoisegit 已经完美支持git-svn和中文了,下面我说一下操作的步骤:

1、用git bash执行
git svn clone  https://svn-path/git

这句是针对visual svn的,因为大部分都是https协议的,又没有证书,如果不先用命令行你就没有办法选择和输入用户名密码,选择永久接受,并输入用户名密码,获取版本库

image

2、尽情使用git add, git commit ,git status, git log,然后git svn dcommit就可以了,期间你可以使用任何换基操作,最好不要跟原来的冲突,整合后再提交你的修改

3、tortoise git 的show log和diff相当好用,比命令行更加直观化,其blame可以让你看到整个文件的一生,让人有种时光穿梭的感觉

到此我才知道git提供换基与变基操作的真实含义,无论你在本地提交多少次,只要在dcommit前把这些合并一下,svn版本库里面就不会出现你合并前的操作记录,给别人看起来也更加清爽。

另外两个比较有用的设置,git bash虽然好用,但每次都要进行路径切换。可将git目录下的bin目录设置到path中,在工程目录按住shift右击,“在此处打开命令窗口”,就可以进行git操作了,如果ls会出现中文乱码,就直接用dir好了,这个保证不会有问题,使用git的相关命令也没问题,甚至你可以在任何地方使用vim编辑器了,多么酷的一个功能啊!

2012年5月7日星期一

struts标签include页面不能显示

使用struts2标签<s:include value=”bottom.jsp” />始终不能显示,但上面的<s:include value=”top.jsp” />能够正常显示,让我查了好久,原来是在bottom.jsp使用了一个标签,但语法错了,将value写成了vlaue,所以不能正常加载

这个错误浪费了我至少30分钟时间