存档

‘随笔’ 分类的存档

2012年1月22日 没有评论
No Gravatar

爆竹声中一岁除,跃马腾龙展宏图。

分类: 随笔 标签:

倚天出笼记

2012年1月22日 2 条评论
No Gravatar

持利器,事半而功倍。所以IT界以发明各种轮子为主要乐事。若器成则功利倍,没有人可以拒绝。在开始打造我们开发的目标团队之时,虽然还是孤身一人,但对各种使用利器之法也是有所耳闻。那段时间赋闲在家,研究一些好玩的技术,算是为某些事做准备,也可以调整自己的心态,积累精神。

一、高可用的管理平台
版本管理什么的以前都比较习惯了。从CVSSVN一路走来,就是在一个人编码的时候也在使用SVN。管理方面还对比过TracRedmine。虽然一直对Python的好感多于Ruby,但是经过比较之后还是觉得Redmine更好一些。就这样,其实在加入新公司之前,各种管理工具通过选择就已经确定了以redmine/Subversion为基础。这两种工具的结合有很多优点:
* Redmine的权限管理可以于Subversion集成。
* Subversion提交的内容与Redmine的问题可以有效地连接。
* Redmine还可以提供简单的BUG管理功能。
从某种意义上来说,我是“拒绝文档控”。一直以来想鼓吹的就是没有文档的软件开发、没有说明书的软件操作方式。但是计划还是要有的,对进度的控制也要在合理的范围内。Redmine正好提供了详细的管理能力。除了可以对项目提供计划和实施管理之外,它的问题条目还可以详细或者粗略地提供开发时间的一些细节。如果可以,使用它也可以生成项目的开发或者设计文档。

二、高可用的硬件
而且那段时间一直使用Ubuntu做为Desktop,两个显示器使用起来,调代码、测试输出效率非常高。以致于当时大致每天下午可以有一两个小时出去骑会自行车散心。所以团队组建初期就提了硬件的指标,这个配置现在看来水平也不算低。每台开发用的电脑都是4核心CPU/8G内存,显示器的概算是每个人都是双显。后来因为我们还要与其他部门一块办公,大致的双显比例是1/2强。原来的开发机都是台式机,在项目逐渐增多后后续的配置都是移动性较强的笔记本了。
我在与之前一些朋友的探讨过程中,他们不是十分理解为什么配置这么好。最多的质疑是这好的配置要多花钱,但是这个说法非常经不起推敲,以一台电脑三年的预算使用期来算,就算是花费6,000元来配置一台开发用机,一年的成本也只有2000,平均到每个月只有非常少的费用。而采用好工具对开发人员带来的,恐怕用这些钱是换不来的。比如:
* 心情的舒畅
* 工作效率的提高
* 对工作条件的满意程度
没经历过用烂机器开发过程的人永远也不能懂得执行编译似卡死的时候的那种感觉,特别是项目Deadline临近。

三、敏捷的开发框架
使用敏捷框架是必然会在突发的、时间有限的项目中被采用的。特别是新团队,原始积累不够丰富的团队。
我们常用的这两个CodeIgniter/Play框架基本上都是沿着这个思路来的。
选择CI是为了将来在虚拟主机上使用。选择Play则是由于客户要求使用Java。不过我们用absiege的测试结果PHP的还要好一些。

四、模板,一定要有的模板
对于我们来说模板程序员和美工最好的沟通工具。我们的美工甚至已经可以在程序员参与之前,就可以根据需要打造好用户的界面。以至于有个项目的甲方说这个系统你们是不是设计得太简单了?这么快就做好了?
模板系统在为我们以原型驱动的开发过程打造了一个良好的基础,客户可以更好的理解我们的想法,并给我们最真实的意见反馈。
CodeIgniter里采用Smarty模板、Play里采用了自带的Grails模板,虽然还有可以同时用于Java和PHP,甚至当我们使用了Python/Ruby都可以用得上的Mustache模板系统,但是指望一个模板系统在不同的语言下都完全保持一致是不可能的。特别是Play里那些@之类。

五、Flash,IE Killer
如果愿意享受,软件开发的乐趣非常多。但是注意有很多烦恼。我们目前最大的烦恼来自于IE6。当初我们在给客户展示图表的时候,一开始使用了HighCharts,一个基于JavaScript的图表系统,在展示单个图表的时候问题不大,但是多图表展示一度让我们怀疑系统出现了致命的问题。应该说在这个问题上Flash成为了我们开发时IE6的Killer。

六、有效的工具
有效的工具我们用过的真是很多,下面几个是常用的但不限于:
* Httpfox(Web调试)
* Notepad++(HTML开发的利器)
* Piwik(用来分析客户行为)
* Netbeans
* Eclipse

我们还在打造基于node.js和d3.js的图表系统。工具的便利,让我们开发时的倚天剑日趋成熟。
利器在手,快乐我有。

无题

2011年12月28日 1 条评论
No Gravatar

一、
荒原生野树,繁枝菟丝子。自在池水畔,一朝犹枯死。
二、
亭台灯光明,翠竹千杆立。凫凫复娉娉,经冬叶郁郁。

分类: 三心二意, 随笔 标签:

儿子的大作:我爱篮球

2011年11月26日 1 条评论
No Gravatar

儿子说:小眼看世界 世界大惊奇。

分类: 三心二意, 随笔 标签:

远足:心怀坦荡疑无虑,山影旧墙知有恒(一)

2011年10月16日 没有评论
No Gravatar

在放假之前就计划10.1出去玩一下。规划了几条线路,比如某君推荐他的家乡长白望天鹅、@kayism 推荐的桓仁五女山、我偶尔看到过的医巫闾山,锦州的笔架山,或者丹东。@ww8011 同学说家里经济紧张,到哪都是花钱,结果规划了一堆路径,心都野了,又得收回来。后来朋友打电话来说放假出玩的事,心思又动了。决定10.2或者10.3号再决定去哪里。

原计划去另一个朋友家里,因为节前商议好10.1之后选一天去看,一想就不单独去了。所在10.1晚上电话商议10.2号出行。据说去望天鹅车好象不行,去五女山路有点远(单程8个小时左右),医巫山车程近(4小时左右)、知道的人少,估计节日期间人不会太多,就定下目标。

阅读全文…

上传项目: github管理尝试

2011年10月14日 没有评论
No Gravatar
过得几天,就准备开始我们的讨论会,讨论的结果希望有个地方大家都能维护,思来想去还是github靠谱。虽然网络偶尔抽个小疯,但无伤大雅。
项目创建非常容易,有代码维护权限的上传还是需要一些unix知识的。那就是public key的维护。
github给出了比较详细的代码管理说明,但是关于public key只有一个链接。这个key实际就是ssh时需要的两个key之一。可以由以下方式产生:
ssh-keygen -C '邮箱地址' -t rsa
最后私钥在 /home/用户名/.ssh/id_rsa
公钥在/home/用户名/.ssh/id_rsa.pub
将公钥中的内容复制增加到github的公钥管理,即在:https://github.com/account/ssh中增加另一个public key即可。
然后可以用下面的方法测试一下:
$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
下附git命令的用法:
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.
参考:
分类: 随笔 标签: , , ,

Switch to our mobile site