Trade Off

supercalifragilisticexpialidocious

Git使用重新学习(远程仓库)

查看当前远程仓库:git remote  -v,加上-v属性能看得内容详细一些。

添加远程仓库:git remote add [shortname] [url]

有了shortname,就相对于给仓库了一个别名,以后可以用别名操作,git fetch xx即可

get fetch xx是获取远程仓库中有而本地没有的数据

提送数据到远程仓库用:git push remote-name branch-name,推送的时候要注意必须没有他人在推送,且没有其他更新才行,如果他人推送了不少更新,你需要先得到更新,合并后再推送。(这里并不是说和svn一样了,只是你可以自己先在本地提交,但推送到远程服务器上时,需要按照先来后到的原则,保证每个人的提交是不冲突的,是最新的。这是我个人的理解)

远程仓库重命名、删除:git remote rename short-name new-name,git remote rm xx

另外git remote show repo-name能够得到不少信息,有哪些要合并啦,哪些已经删除啦,哪些新仓库出现啦等等,这个是需要连接服务器获取的。

Git使用重新学习(撤销操作)

修改最后一次提交:git commit –amend

如果只是提交信息写错了,运行后会让你重新写提交信息,但如果你忘记了加文件进入,可以这样做,先commit,再add忘记的文件,最后来一句git commit –amend,这看似两次提交,实际只是一次,后面的提交修正了前面的。

取消已暂存的文件:看status的时候有提示,git reset HEAD ,执行后可以把一个已修改的文件从暂存区拉回到“changed but not update”里,前面日志说过,在这里面的文件需要add后才能进入暂存区被提交。

取消修改:如果感觉刚才的修改没有必要,需要取消修改,那么用git checkout – ,在1.6.1以上的版本才会有这样的功能,我刚刚看了下git的版本(git –version)是1.7.5.4,看来暂时不用升级就能体验了。使用后就会发现文件的修改已经被撤销,此命令很危险,如果只是想回退版本可以用stashing和分支来处理,后面再说。

最后说一句,任何被提交的数据都能被恢复,即便是在已经删除的分支中提交的等等,但没有提交的丢了就丢了!!!

Git使用重新学习(文件状态)

就几个简单的git命令记录一下自己的学习过程,我发现如果自己不随时记录自己学到的东西就会遗忘。

对于一个文件,如果没有被git跟踪,那必然是untracked状态,只有已经是tracked状态后才会有后面的三种状态(unmodified、modified、staged(暂存状态))。

此时你如果add了一个文件进入git,那么git就会开始跟踪,那么此时这个文件是tracked状态,但没有修改,查看状态(git status)会现实new file:xxx,此时提交(commit)就会把文件快照放入历史记录中了。这里的add意思是放入暂存区,后面的add还有不同的意思。

对于已经跟踪的文件,我们修改后再查看状态,就会发现刚刚的文件被放入了一个modified那行中,样子大概是这样的:modified:xxx,同时观察一下上面几行,有这样的提示“Changed but not updated:”,意思就是修改了,但没有放入暂存区,此时需要add的另一层意思——把已修改但没放入暂存区的文件放入暂存区。

git commit -a 选项可以跳过暂存过程,直接把已经跟踪的文件放入历史记录中。

总之就是及时看status,并且要看里面的提示,只有changes to be committed后面的文件才会在commit的时候加入到历史记录中。

删除和移动文件:git rm,git mv。

改名操作与linux下的mv命令用法一样。

删除时如果仅仅希望在git中删除,实际仍然保存文件那么加上–cached选项即可。

Mac系统关闭dashboard

一开始感觉dashboard这个东西挺好的,加上了好几个小插件玩,但现在发现使用频率超低,所以干脆想办法关闭吧,听说还能节约部分内存和提升开机速度,对这些倒是不太关心,只能有种不用就关闭的态度驱使着我。

关闭命令:

1
defaults write com.apple.dashboard mcx-disabled -boolean YES;killall dock

如果需要重新开启,请使用这条命令,包括了killall Dock:

1
defaults write com.apple.dashboard mcx-disabled -boolean NO;killall Dock

开启Dock的堆栈功能

打开Terminal,输入:defaults write com.apple.dock scroll-to-open -bool TRUE;killall Dock

然后回车(return),等Dock再次出现后,在已打开程序图标上滚动鼠标滚轮或者手势模拟滚轮,就能看到这个程序打开的子窗口或者子程序,很过瘾好用。

终于回到自由的时候

自从前段时间学校封杀了研究生web端自由登陆drcom以来,我就只能找网络中心的老师开了本科生的web登陆,速度很慢,还有流量限制。

又加上Lion系统中的原drcom客户端不能用,我就攒了攒勇气下载了drcom4mac的源代码回来自己编译,本以为就是平台的微弱差异,没想到一大堆根本看不懂的错误出现,也没那么平静的心来阅读一个个C函数,就这样搁置了。

昨晚Drcom的GoogleGroups中有人发来邮件,说是写了个java的drcom客户端欢迎测试,我今天早晨配置好了libpcap库和jpcap库,然后使用了这个客户端,打开GUI后输入账号密码,登陆没反应。于是告诉了作者,中午收到作者来信,说暂时还只能用命令行方式,这我当然能够接受,可惜在Mac的terminal中显示的中文提示都是乱码,于是svn到了原代码到eclipse中看看吧,按照提示组合了命令行,成功登陆了!

从此又自由了。

项目地址:code.google.com/p/jdrcom/

更新mac下的gem

要不是弄github的pages我也不会接触到gem。

lion的gem是1.3.6这个超低版本,现在最新是1.8.12,我下载了update_rubygem1.8.12.gem,用gem安装上了:

1
sudo gem install update_rubygem-1.8.12.gem

然后不知道怎么用了,于是用gem开启来一个server玩:

1
gem server

不小心看到已经安装了两个gem,执行命令分别是gem和update_rubygem,于是我执行了后面那个,就更新到了1.8.12

mac下的MySQL-python问题

刚刚在学习web.py这个框架,找了一个不错的例子准备自己运行起来看看,结果一调试出现了MySQLdb没找到的情况,于是从官方(http://sourceforge.net/projects/mysql-python/)下载源码准备编译安装,最好不要用easy_install安装了,因为还得修改几个地方才能正常编译安装。

由于是mac系统,MySQL是使用的官方提供的dmg安装包装的,但不知为何MySQLdb的安装脚本找不到位置,于是修改MySQLdb的setup_posix.py,26行有个mysql_config.path = …,修改成你本机中mysql_config所在的地址,比如我的是/usr/local/mysql/bin/mysql_config,保存后分别执行:

1
2
sudo python setup.py build
sudo python setup.py install

安装后最好用python的shell加载一下MySQLdb看看能否正常使用,通常是不行的,因为我就遇到这么个情况,提示缺少image,具体是这样提示的:

1
2
3
4
5
File "/Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg/MySQLdb/__init__.py", line 19, in <module>
   import _mysql
ImportError: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
 Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg/_mysql.so
 Reason: image not found

于是用Google搜索问题,从这里找到了解决方案:

在~/.bash_profile中加入这样的一句:

1
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

然后quit掉terminal再进入一次让这个环境变量更新一下,再次使用MySQLdb就没问题了。

Spring

这不是代表春天或者温泉的意思,实际上是我正在学习期末考试课程S2SH中的一个框架——Spring。

就一变态框架啊,Ioc、AOP这些都是令业界震撼的思想级产物。特别是AOP,就是和OOP同层次的东西,怪不得学习起来很慢很艰难,不过我清楚,期末考试肯定考得超简单,现在我基本是学到哪里忘到哪里。

顺便说下,用Spring做一个简单的AOP测试实例的话,光用自带的jar包根本不行,还需要自己添加下面这几个:

1.aopalliance-1.0.jar(在struts2的lib目录中找到的)

2.aspcetjweaver-1.5.3.jar(aspcetj的官网怎么上都上不去:http://www.aspectj.org,于是在这里下载的:http://www.jar114.com/j/982

3.cglib-nodep-2.2.2.jar(本来用cglib-2.2.2.jar的,但提示缺少asm就下载了这个集成asm的nodep版本,我以为asm就是Spring中的那个asm包呢。官方网站:http://cglib.sourceforge.net

重置MySQL密码

前几天在Mac系统下装了MySQL,装完后是默认没有给root用户带密码的,于是出于安全考虑我就加上了密码,加密码的方式如下:

1
mysqladmin -u root password "mysqlpassword"

很明显引号内的是root用户的新密码。

但在使用的时候我一时想不起来密码了,于是搜索到了官方的Reset the password of MySQL,但看着好麻烦,没有尝试,在这里找到了方法,贴出来主要代码:

先停止mysql的服务,用下面这句启动mysql:

1
mysqld_safe --skip-grant-tables --skip-networking &

用SQL语句修改root的密码:

1
2
UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';
FLUSH PRIVILEGES;

单引号内的东西自己补充吧,第一个是新密码,第二个写root,第三个用localhost就可以了。