Archive for 工具

清除vim搜索历史 :call histdel('/') 寄存器文档 :help registers ,少输入了一个然后文档没查到。用google直接搜文档找到了,,

Continue

virtualbox虚拟机硬盘容量不够用了,之前就分了10g。 >> VBoxManage list hdds UUID:           c9daba2d-b089-4d40-aea8-c0566466dd3e Parent UUID:    base State:          created Type:           normal (base) Location:       /Users/0x55aa/VirtualBox VMs/debian/debian.vdi Storage format: VDI Capacity:       8192 MBytes Encryption:     disabled   >> VBoxManage modifyhd /Users/0x55aa/VirtualBox\ VMs/debian/debian.vdi  --resize 25600 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%   这个ls的时候发现vdi容量没变,磁盘容量还是动态分配的。

Continue

查了两三遍了,整理一下记录着。svn好像不能统一记录,因为有的文件夹不一样,不能统一写匹配模式。现在只是每个文件夹添加 设置使用的编辑器: export SVN_EDITOR=/usr/bin/vim   忽略的文件必须不在版本控制里,add上的还要reset掉才行 svn propedit svn:ignore 文件夹名 svn propget svn:ignore .

Continue

设置全局的用户名邮箱 $ git config --global user.name 0x55aa $ git config --global user.email admin@google.com 设置全局的.gitignore git config --global core.excludesfile ~/.gitignore 设置全局的命令别名 git config --global alias.st status 这个命令确实好用啊,用hg用的一直输入st, 现在又换成git不适应了,总要输错一次。mercurial和git,svn做简单版本控制还是都不错的 其实这些设置都是更改了~/.gitconfig文件。可以参考文档http://git-scm.com/docs/git-config.html

Continue

一个很方便的java class文件反编译工具,支持mac linux windows,使用也很方便,可以直接打开一个jar文件,然后就可以浏览代码了0 0. 下载地址:http://jd.benow.ca/  

Continue

还是在邮件列表里学到的,今天折腾了一下,好在找到一片不错的文章照着配置了一下。 http://home.ustc.edu.cn/~lixuebai/GNU/MuttConfig.html 我用的组合也是mutt+msmtp+getmail+procmail,显示html邮件用的w3m。 安装都是apt-get安装,开始我用源码安装,进去界面都是乱码的也没找原因,直接删掉重新安装了一下。 创建了~/mail目录,下面inbox,postponed,sent,配置文件没有就创建。 复制一下配置文件 ~/.muttrc

#编辑器
set editor="vim"

#邮件发送
set sendmail="/usr/bin/msmtp"

#信箱
set folder="~/mail"
set mbox="~/mail/inbox"
set spoolfile="~/mail/postponed"
set record="~/mail/send"

# 让mutt监视下面几个邮箱,并随时报告新邮件
mailboxes "=inbox"
mailboxes "=Gmail"

#指定你有那些信箱文件。当你按 "c" 切换信箱时,再按 Tab 键,这些信箱就可供你选择
mailboxes Mailbox sent-mail 

#显示html
auto_view text/html

set check_new = yes
set timeout = 600

#这是一个格式字符串,用来控制你的index的列表显示。它的缺省定义是
set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
#这是一个 bool 型变量。它表明你在回信时引用原文是否加入原文的邮件头。
set header=no
#可以设置为 yes, no, ask-yes, 或者 ask-no. 这是说,当你按q退出时,是否提示你(ask-yes,ask-no),
#还是直接就退出了(yes),还是根本不理你(no)。
set quit=ask-yes
#这也是一个提示性变量。它是确定当你退出时,是否提示你把信件从 spool 移动到的 mbox 文件。
set move=no
#当 Mutt 用 thread 方式显示时,是否用纯 ascii 表示树状列表。
set ascii_chars=yes
#回信时是否包含原文。
set include
#回信的引文之前插入那个符号?
set indent_str="> "
#设置你自己的邮件头。
#my_hdr From: xxx@mail.ustc.edu.cn
#打分
#新信件+4分,主题包含“通知”的+2,主题包含 “Circulation” +3, 已经标记删除的 -5,上次没有读的 +1,包含 “believe”的 -10(垃圾广告!)。
score "~N" +4
#score "~s 通知" +2
#score "~s Circulation" +3
score "~D" -5
score "~O" +3
#score "~s believe" -10

#排序方式。
set sort=score
#当用 thread 排序方式时,我们对各个 thread 的相对排序顺序。
set sort_aux=date
#如果翻到最后,再按往下翻也不会翻到下一封信件
set pager_stop
#如果设置,当你按 "r" 回信时,就不会再提示你输入回信地址和主题,直接进入编辑模式。
set fast_reply
#当你按 "t" 或者 "D" 之类的标记操作时,是否自动把光标移动到下一封信件。
set resolve=yes
#地址簿
#source ~/.mutt.alias
#当你在 index 里按 "a" 为来信者取别名时,使用哪一个别名文件保存这个别名。
#set alias_file=~/.mutt.alias
#你发出的邮件保存到那个信箱文件?比如可以像我这样每个月发出的信件放在不同的文件里。
set record="~/mail/=sent-mail-`date +%Y-%m`"
#你的终端支持哪一种编码的显示?这个必须和你的终端编码一样。推荐用utf8
set charset="utf-8"
#send_charset
set send_charset="utf-8"
#外部程序退出时,是否要求用户按一个键才返回。这在察看某些shell命令输出时是比要的,
#否则它们一下就消失了。
set wait_key=yes
#当你要把信件存到另一个信箱,而这个信箱已经存在时,是否提示附加?
set noconfirmappend
#是否把邮件头也放在编辑器里可以修改?
set edit_headers=no
#当你在用 pager 看信件时,在 index 留出多少行显示邮件列表?
set pager_index_lines=4
#告诉 Mutt 你已经订阅了那些邮件列表(mailing-list).
#subscribe fvwm@fvwm.org

#mutt显示日期为中文
set locale="zh_CN"
#有些没有设置字符编码时
#charset-hook ^us-ascii$ utf-8
#Chinaren 等服务器发出来的信件使用了 quoted-printable 的 subject,
#而且设置编码为 "iso8859-1",这显然是错误的。
#对付这个错误的办法是把 iso-8859-1 变成 gb2312 的别名
#charset-hook ^iso-8859-1$ gb2312
# evolution 发过来的 subject 为 utf-8 编码的邮件标题乱码!
#那就把不是 utf-8 的编码都映射到 gb2312
#charset-hook !utf-8 gb2312
charset-hook ^gb2312$ gb18030

# mutt进行pop3收信,当然之前要查看$ mutt -v 编辑情况的确编辑了pop3了。
# 以后进入mutt按G就可以收信了。
#set pop_user=xxx@mail.ustc.edu.cn
#set pop_pass="xxxxxx"
#set pop_host=202.38.64.8
#现在不用mutt直接收信了。

#把mutt发送的from域作为sendmail发送邮件的sender(否则会用user@localdomian)
set envelope_from=yes

macro index G "!getmail\n" "Invoke getmail"
macro pager G "!getmail\n" "Invoke getmail"
  ~/.mailcap
text/html; w3m -o document_charse=%{charset} %s; nametemplate=%s.html
text/html; w3m -dump -o document_charse=%{charset} %s; nametemplate=%s.html; copiousoutput
  ~/.msmtprc
account default
host smtp.gmail.com
port 587
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
from your@gmail.com
auth on
user your@gmail.com
password pass
logfile ~/.getmail/msmtp.log
chmod 600 .msmtprc
~/.getmail/getmailrc
[options]
verbose = 1
read_all = false
message_log = ~/.getmail/log

[retriever]
type = SimplePOP3SSLRetriever
server = pop.gmail.com
username = shanqiuchant@gmail.com
port = 995
password = 370asd285jp##%%**

[destination]
type = MDA_external
path = /usr/bin/procmail
unixfrom = true
  使用crontab定时自动收信
$ crontab -e
每隔10分钟收一次信,只收未读的信件。
0,10,20,30,40,50 * * * * getmail -n
~/.procmailrc
PATH=/bin:/sbin:/usr/bin:/usr/sbin
SHELL=/bin/bash
MAILDIR=$HOME/mail
DEFAULT=$MAILDIR/inbox
LOGFILE=$MAILDIR/.procmaillog

:0
* ^From.*@gmail.com
Gmail

:0   #最后的这个配置就是指如果上面分类剩下的信件全扔到inbox里
* .* inbox

# 黑名单(垃圾邮件)
:0:
* ^From.*badguy
/dev/null
    可以用msmtp anoth_email@gmail.com 这里随便输入一些内容,然后按下Ctrl-d组合键来结束,来测试是否能发送成功。 照着配置了一下还没使用,要使用还需要很多人性化的设置。

Continue

先写上连接:http://0x55aa.sinaapp.com/wiki/ 邮件列表里讨论用什么工具进行学习知识的管理,看有人说了这个工具,研究了一下感觉挺好用的,直接放到博客上了。 项目网站:https://github.com/vimwiki/vimwiki,文档在安装完成后,可以使用:h vimwiki查看。 和网上有的教程差别大的地方是html模版的配置。template_header和footer没有了,使用

'template_path': '~/public_html/templates/',
\ 'template_default': 'def_template',
\ 'template_ext': '.html'}]定义
你可以在wiki中指定:%template、%title、等然后在模板里替换%title%等。高级一点的功能还没用到,只用了一个替换模版的,看网上的文章还可以添加时间,那个我也没研究,不准备加上时间戳,主要记载零碎东西。其实评论也不必加,我一直对这种提供评论服务的很好奇,正好用了一下 感觉真方便,还能减少网站的压力,不过需要前端js的支持才行。原理很简单,没看代码,但是我觉得应该就是通过url来区分的评论。
wiki的代码高亮我还没测试,还不知道能不能用的上0 0.
 

Continue

前端时间想写一个豆瓣小组的发言搜索,想法差不多了。但一直没动手,现在也不想做了,有时候突然来了兴趣,过几天就又感觉没意思了。 记录一下实现的想法: 三个表,一个用户表:豆瓣id 一个帖子表:id在url上,内容,用户id 一个回复表:id在代码里,内容,用户id   抓取的时候,注册一个用户,关注小组里边的所以小组,然后根据帖子的回复时间,进行不重复抓取。然后还有一个按小组来抓取所有当前时间以前的帖子。 这里还没想好刚创建的小组怎么获取,小组没有按时间判续的列表,没有好办法区分。   想想也不怎么现实,回复应该不知道多少亿条。。。。但是差不多可以完全抓取豆瓣小组的数据。

Continue

今天在master下改了代码,又想新建一个分支。git flow init命令的时候提示:fatal: Working tree contains unstaged changes. Aborting. 然后搜索找到好的解决方法。 git stash命令 先git stash 将修改的代码备份,然后创建分支,切换到新分支,然后 git stash pop 就可以了 一下内容来自http://www.cppblog.com/deercoder/archive/2011/11/13/160007.html git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。 git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。 git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。 git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。 关于Git Stash的详细解释,适用场合,这里做一个说明: 使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用'git stash'就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用'git stash apply'将以前一半的工作应用回来。也许有的人会说,那我可不可以多次将未提交的代码压入到栈中?答案是可以的。当你多次使用'git stash'命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,'git stash list'命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用'git stash apply stash@{1}'就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用'git stash clear'来将栈清空。 在这里顺便提下git format-patch -n , n是具体某个数字, 例如 'git format-patch -1' 这时便会根据log生成一个对应的补丁,如果 'git format-patch -2' 那么便会生成2个补丁,当然前提是你的log上有至少有两个记录。

Continue

查看基本配置信息:git config --list 初始化:git flow init 创建了两个分支,查看: git branch 创建开发分支:git flow feature start agents_test 查看:git branch push 一个 feature branch 到远端:


git flow feature publish agents_test
或 git push origin feature/agents_test

更新
git pull origin feature/agents_test
从远端 branch: git flow feature track agents_test 或 git checkout -b agents_test -t origin/feature/agents_test 合并到 git flow feature finish agents_test

参考:
http://ihower.tw/blog/archives/5140
以下来自:
http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&gid=33263&tid=19584
开始使用git-flow

$ git flow init

新建过程中会为你的各种branch类型起一个名字,推荐使用默认。

master branch

该branch永远处于 production-ready的状态,用于发布,并作为长期分支一直保留,所有产品正式发布出去的内容都来源于该分支,对于每次发布还应有其相对应的tag。

develop branch

一直存在于branch中。

feature-* branch

当有一个新的功能进行开发时,推荐将开发过程放在一个新建的feature分支里。该分支从develop中建立,开发过程中可以共享给团队其它成员,也可以从服务器取到其它成员的feature branch。在功能完成时,将其合并回develop分支并册除该分支。
  • git flow feature [list] [-v] 列出所有的features
  • git flow feature start [-F] <name> [<base>] # 开始一个新的特性分支
    • -F fetch from $ORIGIN before performing local operation
  • git flow feature finish [-rFk] <name|nameprefix> # 结束分支
    • -F fetch from $ORIGIN before performing finish # 在新建之前,先从$ORIGIN获取最新代码。
    • -r rebase instead of merge #使用 rebase 代替默认的 merge,只生成一次commit 记录。
    • -k keep branch after performing finish # 在完成之后仍保留该分支,默认会删除。
  • git flow feature publish <name> # 将该branch发布到origin上与其他人共享。
  • git flow feature track <name> # 从$ORIGIN上获取一个他人共享过的branch,并在本地创建。
  • git flow feature diff [<name|nameprefix>] # feature branch和develop之间所有的差异。
  • git flow feature rebase [-i] [<name|nameprefix>] ?
  • git flow feature checkout [<name|nameprefix>] # 从任一branch切换到指定feature分支
  • git flow feature pull <remote> [<name>] # 获取服务器其它成员的该分支提交。
release branch 在做产品发布时创建的分支类型,在这个分支上做一些配置管理的工作,比如说更改软件版本号之类的。需要注意的是release分支应该从develop分支出来,并且发布结束需要合并回develop和master分支。
  • git flow release [list] [-v] # 列出所有的release分支信息
  • git flow release start [-F] <version> # 新建一个名为<version>的release分支(这里建议使用版本号作为branch名,结束时使用该名字为代码打上tag),新的分支名为release/version.
    • -F fetch from $ORIGIN before performing local operation Start new release named <version>
  • git flow release finish [-Fsumpkn] <version> # 完成该version 的release branch
    • -F fetch from $ORIGIN before performing finish # 在新建之前,先从$ORIGIN获取最新代码。
    • -s sign the release tag cryptographically
    • -u use the given GPG-key for the digital signature (implies -s)
    • -m use the given tag message
    • -p push to $ORIGIN after performing finish # 结束后将代码push到 $ORIGIN
    • -k keep branch after performing finish
    • -n don’t tag this release # 结束时不用给代码打上version的tag
  • git flow release publish <name> # 在$ORIGIN上共享该release 分支
  • git flow release track <name> # 从$ORIGIN上获取一个已被共享的release 分支。
hotfix-* branch 当发布出去的版本有继续fix的问题时,使用hotfix分支类型进行问题修复。需要注意的是hotfix分支应该从master分支出来,并且fix结束需要合并回develop和master分支。
  • git flow hotfix [list] [-v] # 列出所有的hotfix分支
  • git flow hotfix start [-F] <version> [<base>] # 新建一个名为<version>的hotfix分支,分支全名为hotfix/version,可通过参数来选择是基于base而非默认的master。
    • -F fetch from $ORIGIN before performing local operation
  • git flow hotfix finish [-Fsumpkn] <version> # 完成一个hotfix分支
    • -F fetch from $ORIGIN before performing finish
    • -s sign the release tag cryptographically
    • -u use the given GPG-key for the digital signature (implies -s)
    • -m use the given tag message
    • -p push to $ORIGIN after performing finish
    • -k keep branch after performing finish
    • -n don’t tag this release # 不为该branch打上tag

Continue