site logo

Keep doing what you want, never give up.

文章配图

运行Github上Go包中example示例的正确姿势

日常开发中我们经常会使用到第三方Go包,而很多Go包中默认都包含了一些example示例代码来帮助用户直观的感受产品运行效果,那我们应该怎么运行这些代码呢? 以前都是一股脑儿的git clone整个仓库然后切换到example目录运行相关代码来看效果,除了这种方法外,我们还可以使用Go为我们提供的go list工具链命令来实现同样的效果。 这里以github.com/gorilla/websocket这个Web Socket包为例,官方示例代码如下: 1 go get github.com/gorilla/websocket 2 cd `go list -f '{{.Dir}}' github.com/gorilla/websocket/examples/chat` 3 go run *.go 这里主要解释下第二行代码的含义: # cd反引号(``)表示命令替换,它会先执行反引号中的命令,然后将命令代码的返回结果替换到命令行中 cd `命令代码` # go list命令的作用是列出包的相关信息 go list github.com/gorilla/websocket/examples/chat 给go list加上 -f ‘{{ .Dir }}‘参数是指定了go list的输出格式,这里使用了Go模版语法,’{{ .Dir }}‘表示输出包的目录路径 # go list命令的作用是列出包的相关信息 go list -f '{{ .Dir }}' github.com/gorilla/websocket/examples/chat 所以,这段代码整体的作用就是获取github.com/gorilla/websocket/examples/chat这个Go包的目录里路径,并切换到这个目录下,然后可以直接在改目录下运行相关go代码了。
文章配图

Hugo静态站点部署最佳实践之稀疏检出public静态目录

一个完整的Hugo静态站点目录往往都包含了各种各样的目录,如content内容目录、themes主题目录等等,既然是静态站点,那我们部署最终的代码时最好只将Hugo生成的静态内容部署到生产服务器,也就是public目录。 假设我们本地的Blog目录结构如下所示: /Blog /archetypes /assets /content /Go /Swift /HTML /data /layouts /public /static /themes /GopherLoveApple 我们一般会将Blog目录下的所有内容一并提交到同一个git仓库以防内容丢失或备份,这种情况下我们就可以利用git的稀疏检出(sparse checkout)功能来实现只检出public目录,从而达到只将public目录下的内容部署到线上服务器。 操作也比较简单,具体git命令如下: mkdir www.example.com cd www.example.com git init #在www.example.com空目录下先初始化一个git仓库 git remote add origin <[email protected]:用户名/仓库url地址.git> #添加远程仓库地址 git config core.sparseCheckout true #开启稀疏检出 echo "public" >> .git/info/sparse-checkout #配置要检出仓库下哪个子目录 git pull origin master 经过上面的配置后当你使用git pull origin master命令拉取代码时就只会拉取public目录下的内容了。
文章配图

Linux免密Clone不同的Github仓库代码

个人和小微企业由于资金紧张,所以大部分都只有一台服务器来跑所有的服务,如果不同的服务是存储在不同的github仓库的话,那就需要将不同的github仓库代码clone到同一台服务器的不同目录。 要实现这样的需求其实我们只需要实现将服务器ssh公钥添加到github仓库的Deploy Key中即可,但是一个ssh key只能被添加一次,如果你将同一个key添加到不同仓库的Deploy Key中github会提示“Key is already in use” 解决办法就时我们生成多个ssh key密钥对,然后让git克隆不同仓库的代码时使用不同的公钥即可,操作步骤如下: 1、生成多个ssh密钥对(为简单起见我们生成两个,一路回车即可): ssh-keygen -t rsa -f ~/.ssh/id_rsa_仓库1 ssh-keygen -t rsa -f ~/.ssh/id_rsa_仓库2 2、添加不同公钥到对应仓库的Deploy Key中: cat ~/.ssh/id_rsa_仓库1.pub cat ~/.ssh/id_rsa_仓库2.pub 3、告诉git工具不同的仓库要使用不同的公钥,这需要通过修改 ~/.ssh/confg文件来实习: Host github-仓库HOST别名1 HostName github.com User git IdentityFile ~/.ssh/id_rsa_仓库1的私钥 Host github-仓库HOST别名2 HostName github.com User git IdentityFile ~/.ssh/id_rsa_仓库2的私钥 最后就可以使用git进行免密操作了(注意git@后面的主机名其实是上面在~/.ssh/confg中添加的别名): git clone git@github-仓库HOST别名1:username/仓库1.git git clone git@github-仓库HOST别名2:username/仓库2.git