最近团队开始code review,其实对于一个成熟或者走向成熟的团队而言,这都是十分必要的,顺手转一篇关于code review 的文章。 原文出处:https://segmentfault.com/a/1190000004502976 一、目的是什么 做任何事情都要有一个目的,那么我们做code review的目的是什么呢?本来开发工期就非常紧了,特别是身处中国这个大环境下的互联网公司,老板恨不得要你二十四小时连轴转,为什么还要花那么多时间去做code review呢?我认为code review的目的在于提升代码质量。 前几天看了篇文章,里面有这么一段对我触动很大: 在这种业务需求紧张的模式下,Facebook一些开源技术方案是如何产出的,是非业务团队专门做的么? 我想说的是即使业务需求紧张,也一样把代码好好写好,另外有牛逼的tech lead和严格的code review,总的质量也不是很差。国内有一点很不好:经常没有code review;而且技术人员观念不好,把要写的代码当差事,只要能完成能用就好。所以就越来越操。 (Code reivew一直是硅谷一线互联网公司的质量控制法宝,从Apple到Google,从Facebook到现在的Airbnb和Uber。可悲的是,国内的人都太聪明,觉得这东西没用繁琐,而且减慢开发速度。有时,我们就是太过聪明。) 所以我们不要总是拿没时间来当做借口,如果对代码质量没有一定的追求,给再多时间也是没用的。 详情 »
初始化项目 我们先创建个空文件夹,然后初始化 package.json ,填写一些基本信息。 $ npm init 接下来我们开始安装依赖项,我的 package.json 的依赖项如下 "devDependencies": { "babel": "^5.5.6", "babel-core": "^5.5.6", "babel-loader": "^5.1.4", "history": "^1.13.1", "react": "^0.13.3" 详情 »
我们在设置图表时候经常会动态设置数据列的宽度,但是如果数量较少的话,经常会比较难看,于是我们会想到限制一个最大宽度。这段代码应该适合你。 (function(H) { var each = H.each; H.wrap(H.seriesTypes.column.prototype, 'drawPoints', function(proceed) { var series = this; if (series.data.length > 0) { var width = series.barW > series.options.maxPointWidth ? series.options.maxPointWidth : series.barW; each(this.data, function(point) { point.shapeArgs.x += (point.shapeArgs.width - width) / 2; 详情 »
ThinkJS2.0开始支持使用cmd命令进行控制器,数据模型等的创建,类似于Rails 添加模块 // 添加user模块 thinkjs module user 系统创建时默认会有common 和 home模块,如果需要创建其他模块,需要自己新建目录或者使用上面的命令行. 添加 controller // 创建user模块下的profile controller thinkjs controller user/profile 我们可以使用thinkjs controller 控制器名称默认是在common模块下创建,如果指定到某模块下的控制器需要指定模块名字模块/控制器. 添加模型 thinkjs model user; 我们一般使用thinkjs model 模型名称。 执行完成后,会创建 src/common/model/user.js 文件。 你也可以指定某个模块,类似这样: thinkjs model home/post; 添加 Mongo Model 默认添加的 Model 是关系数据库的模型,如果想创建 Mongo 详情 »
在Vagrantfile 中修改这行 config.vm.provider "virtualbox" do |v| #other configuration v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"] end 2使用管理员身份打开cmd 运行vagrant up(非常重要) PS: 如果使用node_module ,可以在非共享目录进行模块安装,然后进行软链接到开发的项目上。 详情 »
使用svn 或者 git 的时候难免需要忽律一些文件,这里可以简单列出一些格式文件 gitignore **/.DS_Store node_modules/ logs/*.log views/dir/*.tpl(视图文件后缀) svn 使用 svn ,需要使用命令: svn propset svn:ignore "file1 // 需要换行输入 file2 ... dir/" . 或者加个.svnignore文件,把规则加进去 **/.DS_Store node_modules/ logs/*.log views/dir/*.tpl ... more 然后输入命令svn propset svn:ignore -R -F .svnignore . 就ok啦! 详情 »
第一次使用Vagrant Box ,或多或少会遇到这么一个问题,就是切下来的代码,可以运行,改接口也可以,但是静态资源(比如css,js)始终却改动不生效,有的会出现一系列红点(用chrome查看的话),其实这种问题只需要一个配置选项就OK了。 # If you use nginx as your main web server # add this directive in your nginx.conf sendfile off # If you use apache as your main web server # add this directive in your httpd.conf (or apache.conf) EnableSendfile off 参考:http://www.falexandrou. 详情 »
很多node程序在退出console后会自动关掉进程,解决方法有很多,诸如 pm2,当然今天主要说下Supervisor。 安装 Debian/Ubuntu: apt-get install supervisor Fedora: yum install supervisor Most other distributions: easy_install supervisor 配置 你可以编辑 /etc/supervisor/supervisor.conf 或者在/etc/supervisor/conf.d 目录下添加thinkjs.conf配置。类似于nginx 的配置。 配置(thinkjs)参考: [program:thinkjs] command = node /usr/www/thinkjs/index.js // start file directory = /usr/www/thinkjs user = root 详情 »
Mac 支持 ssh -d 进行socket 代理,如果你有aws主机的话,一个命令行就搞定翻墙。 ssh -D 7070 -i "xxx.pem" user@xx.xx.xx.xx(IP) 然后使用chrome Proxy Switchy 翻墙。 Proxy Switchy 配置详见:http://www.huluboke.com/proxy-switchy/ 详情 »