Skip to main content

· One min read
  • gf:文件跳转 go to file, 选中代码中的路径,gf就可以实现文件跳转
  • gd:代码跳转
  • bf: 回退至原文件 back to file
  • ctrl+o: 回退至原文件
  • ctrl+i :再次打开之前跳转的文件
  • :sp ./{filename} 分屏打开当前目录下的filename
  • ctrl+w+k:光标移动至分屏上方窗口
  • ctrl+w+j:光标移动至分屏下方窗口
  • v模式下移动光标,按y进行复制,按p进行粘贴。
  • :e file: 写文件, 如果你记得文件名也可以实现跳转
  • :w : save

· 2 min read

nvm安装已经失败很多次了 原因是道听途说 没有仔细阅读官网的README

不过我这次的成功也是遵循了以下:

  • 路径不出现空格
  • 安装nvm的时候nodejs的安装路径指定的是其他位置 path: D:\node_versions

安装过程

1, 到 https://github.com/coreybutler/nvm-windows/releases 去下载最新版本的nvm-setup.zip

解压安装,路径不要有空格 nodejs的安装路径指定的是其他位置 我选择的是 path: D:\node_versions

安装成功之后,就可以用终端powershell来使用nvm命令了,但是必须以管理员身份运行,如下图官网所说 windows需要管理员权限才能创建node的软链接,之前都是在这踩的坑

完事之后

以上命令和nvm ls都是可以用的,但是当使用nvm install X.X.X的时候就出错了,原因是无法连接node.js的官网

设置node和npm镜像

将nvm安装路径下的setting.txt追加几行配置

arch: 64
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
proxy: none

完整的配置如下:

之后就可以飞起来了

· One min read

windows安装nginx很简单

1, 到 官网 下载对应的版本:x86表示32位 64表示64位

2,解压到任意盘符,以 D:\nginx-1.20.2为例:

3,将路径加入到系统环境变量%PATH%中,这样不管你在任何目录打开终端输入nginx都可以启动nginx

· One min read
_sql := "select tid, bid, cover, title,limit_content,create_time,see,comment from blog where draft = '0' and title like CONCAT('%',?,'%') order by id desc limit ?,? "
// to do
rows, err := stmt.Query(title, (page-1)*FRONT_SIZE, FRONT_SIZE)

limit A, B: A是起始位置,等于(pageNum-1)*SIZE, B为SIZE(相当于步长)

实现前端分页API需要返回2个数据:

  • 总页数
  • 前端给定页数n,返回第n页的数据

· One min read
git clone git@github.com:suzaku/shonenjump.git
cd shonenjump
go install

wget -O ~/.shonenjump.zsh https://raw.githubusercontent.com/suzaku/shonenjump/master/scripts/shonenjump.zsh
echo '. $HOME/.shonenjump.zsh' >> ~/.zshrc
source ~/.zshrc

# use
j sc
j des

· One min read
  • :w: 格式化代码
  • normal状态下ciw:改一个单词
  • normal状态下ci":修改当前或下1个""里的内容
  • normal状态下ci(:修改()里的内容, 注意光标必须移到()中方可生效
  • normal状态下ci):修改()里的内容,注意光标必须移到()中方可生效
  • normal状态下gd: 且换到方法的定义处
  • buff切换: ctrl+p(:bf)切换下一个buff、ctrl+n (:bn) 切换上一个buff
  • ,e: 查看配置文件
  • 关闭当前buff: :bw
  • b w:当前单词间的切换
  • gd:跳转到方法的定义处(:GoDoc
  • :ReplaceTo: 快速替换 ,r
  • `:GoRename": 全局替换

· One min read
package main

import (
"github.com/scott-x/email"
"github.com/scott-x/randomCode"
)

func main() {
subject := "Slimx News"
body := `【温馨提示】:有人正在尝试访问你的博客, 验证码为: `
code, _ := randomCode.Random(6)
body += code
//send email
email.SendEmail(subject, body)
}

· One min read

前言

有这样的需求,我们把excel的数据存库了,可以直接调用,但是不排除中间修改数据的情况,如果excel被修改数据就不是最新的,所以,在拿到数据之前需要做时间上的对比

coding

package main

import (
"log"
"os"
"time"
)

func main() {
log.Println(GetFileModTime("/Users/apple/desktop/a.txt"))
}

//获取文件修改时间 返回unix时间戳
func GetFileModTime(path string) int64 {
f, err := os.Open(path)
if err != nil {
log.Println("open file error")
return time.Now().Unix()
}
defer f.Close()

fi, err := f.Stat()
if err != nil {
log.Println("stat fileinfo error")
return time.Now().Unix()
}

return fi.ModTime().Unix()
}

· One min read

code

package main

import (
"fmt"
"log"
"net/http"
)

func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "hello world")
})
log.Println("server is running at http://127.0.0.1:8888")
http.ListenAndServe(":8888", nil)
}

ipv6如何访问

· One min read

mailto

<a href = "mailto: abc@example.com">Send Email</a>
<a href = "http://xxx@example.com" target="_blank">Send Email</a>

target 属性