存档
远足:心怀坦荡疑无虑,山影旧墙知有恒(一)
在放假之前就计划10.1出去玩一下。规划了几条线路,比如某君推荐他的家乡长白望天鹅、@kayism 推荐的桓仁五女山、我偶尔看到过的医巫闾山,锦州的笔架山,或者丹东。@ww8011 同学说家里经济紧张,到哪都是花钱,结果规划了一堆路径,心都野了,又得收回来。后来朋友打电话来说放假出玩的事,心思又动了。决定10.2或者10.3号再决定去哪里。
原计划去另一个朋友家里,因为节前商议好10.1之后选一天去看,一想就不单独去了。所在10.1晚上电话商议10.2号出行。据说去望天鹅车好象不行,去五女山路有点远(单程8个小时左右),医巫山车程近(4小时左右)、知道的人少,估计节日期间人不会太多,就定下目标。
上传项目: github管理尝试
ssh-keygen -C '邮箱地址' -t rsa
$test with ssh -v git@github.com OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to github.com [github ip] port 22. debug1: Connection established. debug1: identity file /home/username/.ssh/id_rsa type 1 debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048 debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048 debug1: identity file /home/username/.ssh/id_rsa-cert type -1 debug1: identity file /home/username/.ssh/id_dsa type -1 debug1: identity file /home/username/.ssh/id_dsa-cert type -1 debug1: identity file /home/username/.ssh/id_ecdsa type -1 debug1: identity file /home/username/.ssh/id_ecdsa-cert type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5github2 debug1: match: OpenSSH_5.1p1 Debian-5github2 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Server host key: RSA public key The authenticity of host 'github.com (github ip)' can't be established. RSA key fingerprint is public key. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,github ip' (RSA) to the list of known hosts. debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering RSA public key: /home/username/.ssh/id_rsa debug1: Remote: Forced command: gerve username debug1: Remote: Port forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: Pty allocation disabled. debug1: Server accepts key: pkalg ssh-rsa blen 279 debug1: Remote: Forced command: gerve username debug1: Remote: Port forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: Pty allocation disabled. debug1: Authentication succeeded (publickey). Authenticated to github.com ([github ip]:22). debug1: channel 0: new [client-session] debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: Sending environment. debug1: Sending env LC_COLLATE = en_US.UTF-8 debug1: Sending env LANG = en_US.UTF-8 debug1: Sending env LC_CTYPE = en_US.UTF-8 PTY allocation request failed on channel 0
git config --global user.name "你的名字" git config --global user.email 你的邮箱 git init git add . git commit -m 'first commit' git remote add origin git@github.com:用户名/项目名.git git push origin master
usage: git [--version] [--exec-path[=<path>]] [--html-path]
[-p|--paginate|--no-pager] [--no-replace-objects]
[--bare] [--git-dir=<path>] [--work-tree=<path>]
[-c name=value] [--help]
<command> [<args>]
The most commonly used git commands are:
add Add file contents to the index
bisect Find by binary search the change that introduced a bug
branch List, create, or delete branches
checkout Checkout a branch or paths to the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
fetch Download objects and refs from another repository
grep Print lines matching a pattern
init Create an empty git repository or reinitialize an existing one
log Show commit logs
merge Join two or more development histories together
mv Move or rename a file, a directory, or a symlink
pull Fetch from and merge with another repository or a local branch
push Update remote refs along with associated objects
rebase Forward-port local commits to the updated upstream head
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
show Show various types of objects
status Show the working tree status
tag Create, list, delete or verify a tag object signed with GPG
See 'git help <command>' for more information on a specific command.
晚餐:敏捷测试以及其它问题
总是感觉需要学习的东西太多,所以喜欢参加各种技术聚会。我是一个非常好的听众。还刻西游记中佛祖座前的黄鼠、大鹏么?听也是得道的一种方式。:)
1. 引子
9.27,正是敏捷测试大师Janet Gregory来连授课的时候,被邀参与见面,并且能将自己的疑惑提出来,幸甚。因为英语不好,结果汉英夹杂的提问,多亏有李兄翻译。
我去年10.29日正式组建的这个部门,在近满一年的时候能够得到这么有益的指导,明年和以后的发展又多了新的稳定因素。
回来之后就想动笔。关联的内容太多,比如一想到某个关键词,比如单元测试,就想到我们的团队居然基本上还没有使用。还有一些新项目即将启动,又需要策划相关事宜,更让思路如同天马行空。一写起来就感觉,想的时候如同泉涌,下笔之后似若无魂。拖拖拉拉一直到现在(2011.09.30)也没有写完。
2. 抛砖
作为一个不到一年的新团队,我们经历了1,2,3,5,8…(哦,我们的发展过程好斐波纳切)的人员成长。要对新人灌输理念,又让给新人适应的时间。每来一个人,特别是有过传统开发方式的人加入的时候,调整和适应的痛苦都会影响整个团队。虽然开发方式/结果,客户的满意情况都还不错,我们一直以来坚持的无测试策略虽然省了成本,还是出现了一些问题。所以我们的问题是:
Q: 作为小团队,我们目前没有专职的测试人员,测试工作主要由程序员和用户来完成。在性能调整等方面我们还是需要测试人员的。
A: 现在有没有出现问题?如果没有出现问题,那就没关系。长远看来,没有测试是不可能的。
Q: 如何引入测试人员?比如计划引入一个测试人员,如何能让他在未来能够组建起一个测试团队?他是否需要具备一些编程知识?
A: 这个需要根据情况来定。测试人员如果懂得编程知识更好,这样沟通起来就更高效。提出的问题更有针对性。但是一个测试人员不提倡同时参与两个项目。两个项目的不同之处会影响他解决问题和工作的效率。
Q: 成本控制,我们在团队初期不会投入太多费用。
A: 支付:现在还是未来。
Q: 改进策略,是否可以让现在的结对编程程序员,进行角色互换进行结对测试?在一定的条件下,是否可以将比较适合的那个人转换为专职的测试人员?
A: 进行互换结对测试,可以。但是进行程序到测试人员的转换?他们的思维方式不一样,工作的重点是不一样的,为什么要这样做呢?
3. 聆听
每个人都是参与者。参与和了解意味着效率。
Planning Poker Card
这种方式对于预估项目规模很有意思。不过由于我们只是一个部门,搞得太欢乐对其它部门会有影响,这个可以在条件成熟的情况下进行。
4. 引玉
设计上我们采用的敏捷框架,给我们提供了一种特别有力的帮助,我们可以在项目初始,直接由UI设计人员将界面原型设计完成,采用DEMO数据(一般会耗时1周或2周),让用户对应用系统有最直观的认识。代码编写人员也方便进行编码工作。遇到的遗憾是有个客户认为程序已经做完了(当然这是沟通之过)。这种方式您认为有什么优缺点?
为了提高新程序员的入职效率,我们在实施一种 copy-cat learning方式的学习方法。将成型的类似程序提供给新的程序员进行抄袭,在强化他们编程基础的同时,也可以完成他们经验的积累。这样在我们差不多每周进行的技术交流中就可以提出更有效率的问题。在开发的过程中,结对的有经验程序员也可以逐渐将为何如此这样的编程理念传授给他们。采用这样的方式,一般一个编程新手可以在大约1个月左右就可以真正参与到项目中去了。这种方式您认为有什么优缺点?
在向客户提交程序的时候,Google大神的beta策略影响了我们,我们一直在尝试一种保持beta状态的交付方法。保证稳定的业务实现,我们可能提供简朴的UI给用户,并逐步在上面增加方便用户使用的实验功能,有些UI可能会提供稳定和实验两种方式。敏捷的开发方法,让用户有了更灵活的选择。这种方式您认为有什么优缺点?
5. 尝试
仔细分析当晚所听所学,对我们的团队改进非常有益。作为一个敏捷开发的探索者,个人认为它应该印证一种态度、是一种方式,而不应该是一种规则。它不会是是军规,第一,你应该如何如何,第二你应该如何如何。现在团队足够稳定。我们再做一些有意思的调整,看是否可以激活每个人的头脑风暴,让我们的效率更高,让每个人可以学到的更多/得到的更多。
我们的调整主要会集中在结对上。除了结对编程、结对设计,增加结对测试、结对发布。
BTW:
1. It’s really an amazing dinner. Learning so much from Janet Gregory(@janetgregoryca). Thanks to Jack Hou(@侯伯薇), Jack Li and all the others: Lijia Sun, Yao, SQA girl from NEU.
2. 前天(2011.09.28)还去看了一下敏捷的behavior testing tools Cucumber。ruby编写。
3. freemind

太皇崇山西岭外,古寺真泉亘古流
久闻真泉寺大名,前一段一个朋友隆重推介。本来的计划是他领路,结果他有事远行。所以只好自己出行。
参考了旅顺真泉寺一文,顺利上路,不过还是走错了路,好在很容易找。山下有个铁门,因为苹果正是挂果期,所以是锁着的。只有徒步上去。只是因为出发的时间有点晚,正午的阳光非常烈。
不过上得山来,神清气爽。因为庙虽小,但是好在清泉冷冽,香烟随意,没有了许多浮世寺庙中诸多的市侩。
规划图旁边的简介牌上有如下文字:
真泉寺位于辽宁省大连市龙头镇太皇山西沟,其沟南北走向,北高南低,青龙护法,玉虎盘卧,拜山对列,案山遥望,植被葱郁,轻纱缠绕,环境优美,夏日清晨如蒙夜雨,太皇崇山峰顶乱石嵯峨处常可观云奔雾走,树转峰移之象,犹如仙境,是一处难得的风水宝地。“U”字形的山脉形成一道天然的屏障,将寺院紧紧包围其中,有“蛤蟆石”、“天书”等天然奇观。
相传唐朝大将薛仁贵东征率五百将士夜间在海上航行,突遇狂风巨浪迷失方向,全体官兵高声诵念“南无观世音菩萨”圣号。突然,太皇山顶一束耀眼的光芒射向他们。于是,他们顺着光的方向安全地行驶到岸边。当他们来到太皇山脚下时,光束突然消失,薛将军的战马踏出一泓甘甜爽口,沁人心脾的清泉。于是派人回京禀报皇帝李世民,太宗下诏在太皇山建一座大寺院,并赐名“真泉寺”。如今古刹虽毁,然而清泉仍旧潺潺流淌,泉水清澈透明,甘甜可口,饮此井水者皆说是此水可消灾去病,延年益寿,并赋予“真泉”之美名,现如今每天到此取泉水者也是络绎不绝。
据金州县志记载:真泉寺始建于唐贞观年间,是横山寺、凌水寺、佛门寺、华山寺、金州寺、朝阳寺、响水寺等八大寺庙之首。现存的古碑上记载:真泉寺古刹也,历数朝代相传庙数十间…丛林,诸禅乡风而至。寺院兴盛时期有三进四合院,占地一万二千平方米。正殿有山门殿、大雄宝殿、法堂、准提殿。侧殿有伽蓝殿、韦陀殿、祖师殿、客堂、僧寮房。左侧山坡上还有宝塔一座。另据民间传说:曾经住过七百僧人、八百道士,还有僧墓百座。庙会是每年农历三月十六日,也是准提菩萨圣诞日,各方善男信女到此拜佛许愿,佛号声声,檀香缭绕。众人皆曰准提显圣,所愿皆满,心诚则灵,无一不验。这座闻名遐迩的千年古刹,历经唐、辽等五代王朝,至少有一千三百年的历史。但是在元朝末年,寺院毁于战乱中。现仅存有残碑一块,古柏一株,古井一眼。
今逢盛世,国泰民安,万众向德,佛地生辉,为恢复寺院,再现辉煌,经大连市有关部门批准复建。真泉寺此次复建是由曾于五台山闭关修行的高僧亲自规划,高僧立愿重建古寺,再塑金身。
希望有识之士鼎力相助!您的功德无量,芳流万古,佛法的甘露将滋润您的万代千秋!
阿弥陀佛
大连真泉寺
阅读全文…