Crazy Boy

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

读书笔记之代码整洁之道(Clean Code)

发表于 2015-12-02 | 更新于 2015-12-07 | 分类于 阅读

软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。《代码整洁之道》提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,《代码整洁之道》作者给出了一系列行之有效的整洁代码操作实践。这些实践在《代码整洁之道》中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
《代码整洁之道》阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。 –豆瓣

  • 有意义的命名
  • 方法
    • 短
    • 标识参数丑陋(bool)
    • 抽离try-catch块
  • 注释
    • 不要留下注释后的代码
    • 方法描述中存在无用的循规式注释,需要建立统一的代码注释规范
  • 良好的代码格式
    • 统一团队的代码格式
  • 异常处理
    • 少用null
  • 边界处理
    • 尽量提供的api里不要用map
  • 单元测试
    • 快速(Fast)
    • 独立(Independent)
    • 可重复(Repeatable)
    • 自足验证(Self-validating)
    • 及时(Timely)
    • 三要素:可读性、可读性、可读性
  • 类
    • 短小
    • 单一职责
    • 内聚
  • 边界
    • map
    • 学习性测试
  • 童子军军规
    • 当你离开一个地方的时候,要让它比你来的时候更加整洁干净
    • 重构
    • 单元测试
  • code smell
    • 注释
    • 环境
    • 函数
    • 一般性问题
    • java
    • 名称
    • 测试

github上Fork项目后的常用的操作指南

发表于 2015-12-02 | 更新于 2015-12-08 | 分类于 技术

我们经常会从github中fork一些项目,fork完之后会有哪些常用的操作呢?
现在把经验分享给大家,希望有利于大家参与到开源的项目来。

提交自己本地修改到自己的项目

此步骤即最基本的git修改操作

1
2
3
4
5
git clone https://github.com/renliufeng/mojo
cd mojo
git add .
git commit -m 'modify'
git push origin master

自己更新的代码想提交给原作者合并

一般在更新完自己的代码之后,如果希望原作者的代码一起支持变更,需要在github上发起PullRequest。在界面上边有个 Pull Requests ,点进去,然后就可以见到你和原作者项目的差异的代码,上面有个 “Create pull request”. 点击后会让你写上本次提交合并“主题”,还有相关提交修改的内容的一些介绍, 这方便原作者理解和了解你的修改,并会考虑是否给你的提交合并到他自己本身的代码。 写完这些信息后, 然后提交过去。 作者的项目就会收到你这个请求了。如果他认为你写的代码没问题,介绍也合理, 就会合并到你的代码到他的主代码中。

更新自己的代码和原作者的项目保持一致

经过一段时间, 有可能作者原来的代码变化很大, 你想接着在他最新的代码上修改, 这时你需要合并原作者的最新代码过来, 让你的项目变成最新的。这个需要接着在你的本地操作。
假设前提是, 你现在你的代码是克隆下来在本地的。 例如我 Fork 了 sri (Mojo 的作者) 的 Mojo 项目, 我的项目地址是https://github.com/renliufeng/mojo我现在克隆这个在我的本地了。

1
2
git clone https://github.com/renliufeng/mojo
cd mojo

接着, 我只需要添加 sri 项目的地址,也就是主项目的 remote 地址, 我们加入后, 给代码 fetch 过来, 然后进行 merge 的合并操作。

1
2
3
git remote add sri https://github.com/kraih/mojo
git fetch sri
git merge sri/master

这样就能给你的当前本地的项目变成和原作者的主项目一样。 然后你按正常的流程进行修改并提交到你的项目就好了。

1
2
git commit -am '更新到原作者的主分支的进度'
git push origin

要接着给修改提交给原作者,请参照第二步。

使用七牛为Hexo存储图片和CDN加速

发表于 2015-11-27 | 更新于 2015-12-08 | 分类于 技术

使用七牛为Hexo存储图片
Hexo文章中的图片,可以放在本地,然后和静态文件一起发布(部署)到你的空间。我以前就是这么干的,见这里。
今天又看Hexo官方文档,有支持七牛的插件,尝试了一下,发现是不可用的,因为插件代码中有一些路径有问题,我已经提交了bug给作者。不过因此我开始试用了七牛,感觉一些功能还是很不错的,而且10GB免费存储,每月10GB免费下载流量…,用做博客图片等资源存储,正合适。

注册和安装七牛工具
首先需要申请七牛账号,如果你也需要申请,请访问这个链接(https://portal.qiniu.com/signup?code=3lb1qxh8ee5oy), 这样我可以获得更多的流量(5GB)。
然后登录七牛网站,按照官网说明创建空间。比如我创建的空间是shiqichan,那么我上传的文件,就可以通过这样的URL访问:
http://shiqichan.qiniudn.com/myImg.png
我上传图片文件,使用了七牛提供的命令行工具,当然你也可以使用七牛提供的web界面上传。使用命令行上传的好处是,批量增量的上传。可在这里下载,有Mac版本。
在Mac下的安装办法,解压缩到某个目录下,比如我是存放在/opt/tools/qrsync下了。设置PATH:
sudo vim /etc/paths
将qrsync路径加进去,这样就可以直接输入命令访问了。
Hexo使用七牛图片的步骤
我是在blog目录下,创建了个cdn目录,用来存放图片等资源文件。
hexo的配置文件,默认日志的url方式是:
http://yoursite/year/month/day/your-post-name
做了调整,在_config.yml文件中修改:
permalink: :title/
然后,在cdn目录下,创建日志名称的目录,比如本文的目录名称就是:
use-qiniu-store-image-for-hexo
在这个目录下放置本文的图片,然后使用qrsync命令同步到七牛。再通过七牛的web界面复制出这个图片的url,比如:
http://shiqichan.qiniudn.com/use-qiniu-store-image-for-hexo/qiniu.png
最后,就是在日志文件中加入image标签:
![](http://shiqichan.qiniudn.com/use-qiniu-store-image-for-hexo/qiniu.png)
样式上对图片的处理
这样做显示的图片,有个问题,有时候显示图片太大了。
查了一下hexo默认样式有关图片的设置(见thems/light/source/css/_partial/article.styl):

1
2
3
4
img, video
max-width 300px
height auto
border none

这是stylus,用来生成css文件的。对图片宽度做了约束,但没有对图片高度做约束,如果宽度不高而高度很大,就会出现问题。
改为:

1
2
3
4
5
6
7
8
9
box-shadow(args…)
-webkit-box-shadow args
-moz-box-shadow args
box-shadow args
img, video
max-width 300px
max-height 300px
border none
box-shadow 2px 2px 3px #aaaaaa

个人博客SEO技巧

发表于 2015-11-27 | 分类于 技术

搜索引擎优化(search engine optimization,简称seo):指遵循搜索引擎的搜索原理,对网站结构、网页文字语言和站点间互动外交略等进行合理规划部署,以改善网站在搜索引擎的搜索表现,进而增加客户发现并访问网站的可能性的这样一个过程. 搜索引擎优化也是一种科学的发展观和方法论,它随着搜索引擎的发展而发展, 同时也促进了搜索引擎的发展。

对博客进行搜索引擎优化也就是博客内容被搜索引擎收录及优先排序,以此增加博客的点击率和曝光度,最终提升博客的综合能力。写博客的人,内容不仅要对用户友好,让大部分人都能看懂,而且也要对搜索引擎友好。

下面提供一些技巧
1:博客要经常保持更新,文字始终紧紧围绕关键字,围绕网站主题。
2:SEO优化重点以文章内容页优化为主。
3:适当给每个页面增加keyword(关键词)、Description(页面描述)、robots(搜索引擎抓取器)等标签。
4:在新文章中适当增加一些老文章的链接,文章的内部链接一定要自然。
5:新博客可以建立单一关键词策略,以增强网站对搜索引擎的权威性。如卢松松博客建立初期只有一个”网站设计”关键词。
6:栏目分类尽量使用目录形式。如:http://lusongsong.com/youhua/而不是http://lusongsong.com/youhua.html
7:可以在网页底部加上站点地图sitemap,HTML格式是给用户看的,XML格式是给搜索引擎看的。
8:比较重要文章的URL可以使用拼音、英文和分割线等网址结构。
9:外部链接建设很重要,新博客推荐使用工具http://tool.lusongsong.com/seo/
10:垃圾留言一定要删除,非常影响排名。
11:记得给每个博文插图加上和文章内容相关的alt信息,并在图片周围添加相关信息。
12:文章中相同的关键词不能过多,如果非要堆砌关键词,可适当使用长尾关键词。
13:每篇文章的结尾处可加入“原创文章如转载,请注明出处”“本文首发于XXX网站”等信息,对SEO有一定帮助。
14:通过添加TAG标签可以增强主题的相关性和被搜索的概率。
15:文章的Title最好以“文章标题-博客名称”形式出现。
16:文章标题最好能出现一次关键字。
17:关键字最好在第一段或最后一段能够出现。
18:不要选择非常热门的关键词。
19:不要一次性增加大量连接,更不要一次性删减大量连接。
20:坚持!

配置git多SSH-Key共存

发表于 2015-11-25 | 更新于 2015-12-02 | 分类于 技术

今天整理下以前在配置git过程中的SSH-Key共存的方法

git的入门学习

推荐廖雪峰的网站: http://www.liaoxuefeng.com

关于多个SSH Key的共存

在使用git过程中,会遇到配置多个ssh-key的共存情况,比如一个连接公司的git,一个用来连接github,或者两个github账户。这里以github和oschina两个ssh-key共存举例。

首先配置github,生成ssh-key

1
ssh-keygen -t rsa -C “aaa@gmail.com” -f ~/.ssh/github_id_rsa

过程中会要求设置密码,直接回车为空就可以了,此时会生成两个文件githubidrsa和githubidrsa.pub 为了方便区分多个ssh-key,这里我们指定名为githubidrsa,如果不指定会按照生成默认的idrsa

添加SSH agent

1
ssh-add ~/.ssh/github_id_rsa

由于在默认情况下,SSH agent只会去读取id_rsa,为了使新生成的github_id_rsa能被SSH agent读取,将github_id_rsa添加到SSH agent

ssh-key粘贴到github上

1
vim ~/.ssh/github_id_rsa.pub

可以查看生成的ssh-key,将ssh-key粘贴到github上,并用相同的方法生成oschina的ssh-key,并粘贴到oschina上

ssh共存配置

1
sudo vim ~/.ssh/config

为了让两个ssh-key共存,在/.ssh下生成一个config文件,通过config文件指定不同的私钥对应的不同git服务器

1
2
3
4
5
6
7
8
9
10
11
12
#GitHub(aaa@gmail.com)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github_id_rsa

#OSChina(bbb@gmail.com)
Host git.oschina.net
HostName git.oschina.net
User git
IdentityFile ~/.ssh/oschina_id_rsa
然后可以测试下是否成功连接

检查配置是否起作用

1
2
ssh -T github.com
ssh -T git.oschina.net

过程中会问你是否添加到knownhosts,yes即可,会在.ssh目录下生成一个known_hosts文件

git config 配置

需要注意一点的是,git服务一般会根据配置文件的user.name和user.email来获取作者信息(比如上面的github的aaa@gmail.com和oschina的bbb@gmail.com),如果多账户信息不同的话,需要注意在使用前修改配置。

1
2
3
4
5
#查看配置信息
git config --list
#设置全局的name和email
git config --global user.name "xxx"
git config --global user.email "xxx.gmail.com"
1234
Steven Ren

Steven Ren

17 日志
3 分类
19 标签
RSS
GitHub Weibo
Links
  • MacTalk
  • IIssNan
  • WooYun
  • InfoQ
  • 廖雪峰
  • 阮一峰
  • IT江湖
  • 四火的唠叨
© 2015 – 2019 Steven Ren
访问用户: 人
访问次数: 次 博客全站共: 字