secureCRT是一款windows连接Linux的工具,同时内置了SFTP工具,比较方便一边敲命令一边传输文件。

快捷键 alt+P :打开一个SFTP新窗口

需要配置下SFTP本地的路径,如下:

然后就可以通过SFTP往服务器推文件,命令如下:

#进入本机目录
lcd D:/  
#进入主机目录
cd /home/  
#上传本地文件到服务器(文件夹加 -r选项,单个文件去掉)
put -r abc
#下载服务器文件至本地(文件夹加 -r选项,单个文件去掉)
get -r abc 

最近接手一个维护项目由于历史久远,导致原有的程序只能跑在debian 6 系统上,以下作为记录:

1.更换系统源

由于debian官方源已经6和7的源放入存档了,导致安装ca-certificates失败,所以需要更新源。

把原来的源修改为http://archive.debian.org/debian/,我的修改后的如下:

deb http://archive.debian.org/debian/ squeeze main
deb-src http://archive.debian.org/debian/ squeeze main
deb http://archive.debian.org/debian/ squeeze-updates main
deb-src http://archive.debian.org/debian/ squeeze-updates main
deb http://mirrors.ustc.edu.cn/debian-security/ squeeze/updates main
deb-src http://mirrors.ustc.edu.cn/debian-security/ squeeze/updates main

2.安装ca-certificates

只要配置好上述的源以后,就可以直接运行下面的命令,就可以安装好,否则会报404找不到错误。

apt-get install -y ca-certificates

3.安装证书

首先需要下载微信支付证书,链接在此
下载完成后把证书放到 /usr/share/ca-certificates

sudo mv Baltimore_CyberTrust_Root.pem /usr/share/ca-certificates/local/
sudo mv DigiCert_Global_Root_CA.pem /usr/share/ca-certificates/local/

刷新证书

sudo update-ca-certificates --fresh

最近在一个项目中遇到一个需要做外键关联查询的字段,通过beego官网文档发现,beego也支持这种关联关系,例如我的数据库中有userinfo和role两个表,userinfo用于存储用户信息,role用于存储用户的角色,其中userinfo表中的roleid关联role主键id,定义的struct如下:

type Userinfo struct {
    Id       int
    Role     *Role  `orm:"column(roleid);rel(one)"`
    NickName string `orm:"column(nickname)"`
    UserName string `orm:"column(username)"`
}

Userinfo中定义Role指针类型的struct,后面也注释了"rel(one)"表明是一对一关系。

type Role struct {
    Id           int
    Grade        int         `orm:"column(grade)"`
    RightContent string      `orm:"column(rightcontent)"`
}

Role里面就是一个正常的struct,可以指定也可以不指定关系,如果要指定的话,可以注释下"rel(fk)",表明是一对多关系,因为一个Role可能对应多个User。

按照以往移动开发的经验,我们会认为此处我们去数据库读取Userinfo信息,Role字段就也会读取出来,实际上beego在Read函数上没有这样的处理,官网也说明了,不管是普通的Read还是高级查询的AllOne,都只会有默认值,需要自己再去根据Id查询一次才会有值,这一点需要特别注意。

在使用Beego开发API过程中,有几个经常会用到的命令,在此记录下。

调试

bee run

使用上面的命令即可进入监控模式,可以实时看到输出的日志,代码修改以后也可以实时重新编译运行,但在Goland下有个小问题,必须切换下终端窗口,才会立马生效,不然就要等他定时刷新,会比较慢。

交叉编译

bee pack -be GOOS=linux -be GOARCH=amd64

需要带-be 参数指定交叉编译的平台,否则会默认按照当前电脑的平台编译,我们大多数情况下需要编译成服务器平台,使用上述命令即可,这个命令打包以后会把conf单独打包出来,方便维护和使用。

目前我常用到的就这2个,后面用到其他的再补充。

今天在准备格式化输出时,发现一个奇怪的现象:

time.Now().Format("yyyy-MM-dd HH:mm:ss")

结果并没有按照我想象的格式化,而是直接把上面那玩意儿给打印出来了......

通过查询资料发现,特么Golang并不是按照我们常规理解的日期格式化来处理的,而是使用Go语言的诞生时间:

2006-01-02 15:04:05 -0700 MST

而且这个日期就是写死的一个日期,不是这个日期就不认识,就不能正确的格式化。记住就好了,为了方便记忆可以这样按照美式时间格式“月日时分秒年 外加时区”,排列起来依次是 01/02 03:04:05PM ‘06 -0700,刚开始使用时需要注意。

真是一个神奇(反智)的设计啊。